HTML 링크를 통해 SMS 본문 텍스트를 미리 채우는 방법


113

html 링크를 사용하여 본문이 미리 채워진 SMS 앱을 여는 방법은 무엇입니까?

내가 읽은 모든 것은 sms : 18005555555? body = bodyTextHere를 나타내는 것 같습니다.

작동하지만 iPhone에서는 작동하지 않습니다. ? body = bodyTextHere를 꺼내고 sms : phonenumber 만 사용하면 작동합니다.

QR 코드가 사파리 링크를 통해이를 수행하는 여러 사례를 보았습니다. 본문 텍스트를 어떻게 미리 채울 수 있습니까?


이 QR 스캐너가 대신 SMS 앱을 직접 여는 것인지 궁금합니다 ...
merlincam 2011-06-25

나는 그것이 가능하다고 생각하지 않는다. 다음을 참조하십시오 : stackoverflow.com/questions/10848/… stackoverflow.com/questions/1517169/…
Jason Gennaro 2011 년

여전히 사실인가요? 방법이 없나요?
tyler

이것은 100 % 가능합니다. 자세한 내용은 아래 내 대답을 참조하십시오.
Brad Orego

답변:


178

약간 엉망이기는하지만 이것이 100 % 가능하다는 것이 밝혀졌습니다.

Android에서 작동하려면 다음 형식을 사용해야합니다.

<a href="sms:/* phone number here */?body=/* body text here */">Link</a>

iOS에서 작동하려면 다음이 필요합니다.

<a href="sms:/* phone number here */;body=/* body text here */">Link</a>

라이브 데모 : http://bradorego.com/test/sms.html("Phone and? body "및"Phone and; body "는 to : 필드와 본문 텍스트를 모두 자동으로 채워야합니다. 자세한 내용은 소스보기 정보)

최신 정보:

분명히 iOS8은 우리에게 뭔가를 바꿔야 했으므로 다른 댓글 작성자 / 응답자 덕분에 iOS를위한 새로운 스타일이 있습니다.

<a href="sms:/* phone number here */&body=/* body text here */">Link</a>

(전화 번호는 선택 사항)


5
참고 : 최신 OS 버전 (iOS7 / iPhone 5S / 5C 및 Android 4.4)에서는 테스트하지 않았습니다. 특히 Android가 기본 SMS 앱 대신 행 아웃을 사용하도록 전환하면서 더 이상 작동하지 않을 수 있다는보고가 있습니다. 기회가되면 조사하겠습니다.
Brad Orego 2014 년

3
때때로 작동하고 때로는 작동하지 않았기 때문에 지금 살펴 보았습니다. 내 결과 : 이전에 SMS를 한 번 이상 보낸 적이있는 번호로 전화를 걸면 링크가 "본문"과 잘 작동합니다. 그것은 완전히 새로운 번호가 있다면 당신은 운이있어, 당신은 단지 :( 수를 얻을
MMachinegun

7
참고 사항 : 핸들하는 응용 프로그램 smsURI는 안드로이드와 많은 제조 업체에 변경 될 수 있습니다 이렇게; 따라서 특정 장치 / 앱에서는 작동하지만 다른 장치에서는 작동하지 않을 수 있습니다 (또는 단순히 업데이트 후에). 내 제안은 전화 번호 만 설정하지 않는 한 Android에서 사용 하지 않는 것입니다. 테스트 한 iOS 버전 및 Android가 아닌 플랫폼에서만 사용하십시오.
fregante

1
@OrangeDog는 아이폰 OS 7에 대한 내 대답을 참조 stackoverflow.com/questions/6480462/...
paaacman

1
링크가 iOS 11.1에서 본문과 작동하지 않는 것 같습니다
Toskan

49

나는 이것이 오래된 스레드라는 것을 알고 있지만 우연히 발견되어 일부 부품이 더 이상 관련이 없다는 것을 발견했습니다.

전화 번호를 추가하지 않고 텍스트 만 채우려면 다음을 수행 할 수 있습니다.

sms:?&body=/* message body here */

1
그것이 제가 찾고 있던 답입니다. 도와 주셔서 감사합니다!
Konrad G

1
잘 작동하지만 OSX에서 완료되면 텍스트 메시지가 열립니다. To : ?, 공백으로 표시하는 방법에 대한 아이디어가 있습니까? 나는 시도 sms:?body하고 sms:;?body, 첫 번째로 보내려고? 두 번째는에 전송을 시도합니다.
Joshua Ohana

@JoshuaOhana "sms :? 0123456789 & body = My Message"를 시도하면 어떻게됩니까? 죄송합니다. 현재 Apple 기기에 액세스 할 수 없습니다.
알리

Android 기기에서는 작동하지 않습니다. ? body =만이 트릭을 수행합니다.
Doodlemeat

40

iOS 8의 경우 다음을 시도하십시오.

<a href="sms:/* phone number here */&body=/* body text here */">Link</a>

";"전환 "&"는 나를 위해 일했습니다.


3
fwiw 방금 iOS 10에서 테스트했으며 여전히 작동합니다. :).
Rob Dawson

@landen SMS 앱이 이미 백그라운드에서 열린 경우 완벽하게 작동합니다. 그렇지 않은 경우 전화 번호 또는 메시지 본문없이 내 전화에서 앱을 열 수 있습니다. 어떤 아이디어?
DMEM

31

모든 기호를이 순서로 넣으십시오 (코드 측면에서 가장 합리적이기 때문에이 순서로만 테스트했습니다).

본문 링크에 대한주의 ... 난 그냥 넣어 ... ;?&body=. 또한 내가 사용할 필요가 있음을 알았습니다.%20 어떤 공간에도 을 .

나는 내 아이폰 (v. 9.2)과 다른 안드로이드에서 그것을 테스트했으며 잘 작동합니다.

이렇게하면 다른 장치에 대해 해킹해야하는 문제가 해결됩니다. SMS에서 테스트했을 때 아티팩트가 없습니다.

<a href="sms:19131234567;?&body=Question%20from%20mywebsite.com.%20%20MY%20MESSAGE%20-%20" title="Click here to TEXT US gallery token needs updating!">Send me SMS</a>

번호를 제거하고 세미콜론 (sms :;? & body = Questi ..) 만 남겨두면 번호가 미리 채워지는 것을 원하지 않았을 때 android 7 기본 메신저에서 작동했습니다
ibex

2017-11-17 : Aquaris BQ, Nexus, iPhone 7 및 LPhone에서 시도했으며 이것은 매력처럼 작동합니다. 다양한 브라우저 (Chrome, Firefox, Opera, 기본)에서 시도했습니다. 감사합니다!
Urosh T. 2017

Android에서는 사용중인 SMS 앱에 따라 다릅니다. 예를 들어, QKSMS 앱이있는 Android 9에서는;?에 메시지를 보내려고합니다. 그리고 몸은 포함되지 않습니다. (QKSMS는 기본 앱은 아니지만 특정 크기에 도달 한 후 SMS가 MMS가되는 것을 원하지 않는 사람들이 사용할 수 있습니다.) 안타깝게도 HTML 페이지에서 어떤 SMS 앱을 사용할 것인지 결정할 방법이 없습니다. 사용 중입니다. 이런 이유로 Android를 감지하면 SMS 링크를 생략하겠습니다.
Silas S. Brown

15

Android 및 iOS에 대해 두 개의 별도 앵커 태그가 필요하지 않습니다. 이것은 도움이 될 것입니다.

// 연락처 없음
<a href="sms:?&body=message">Text Message</a>

// 연락처 번호 포함
<a href="sms:1234567890;?&body=message">Text Message</a>

// Android 및 iOS 모두에서 작동


1
감사합니다. iOS 및 Android에서 잘 작동합니다! 조심 Without Contact Number맥 OS에 버전 - 그것은 SMS를 설정 to?
올리 Khakwani

10

제안 된 방법을 찾고 테스트했습니다.

<a href="sms:12345678?body=Hello my friend">Send SMS</a>

결과는 다음과 같습니다.

  • iPhone4-오류 (메시지 본문이 비어 있음)
  • Nokia N8-ok (메시지 본문- "Hello my friend", To "12345678");
  • HTC Mozart-오류 ( "지원되지 않는 페이지"메시지 ( "Send sms"링크를 클릭 한 후));
  • HTC
    Desire- 오류 ( "Invalid recipients (s) : <12345678? body = Hellomyfriend>"메시지 ( "Send sms"링크를 클릭 한 후)).

따라서 적어도이 방법으로는 작동하지 않는다고 결론을 내립니다.


iPhone4의 경우 내 답변을 참조하십시오. stackoverflow.com/questions/6480462/…
paaacman

8

Android 및 iOS 본체 만 :

<a href="sms://;?&body=Hello%20World">Only body</a>

Android 및 iOS 한 명의 수신자 만 본문 :

<a href="sms://+15552345678;?&body=Hello%20World">one recipient only with body</a>

본문이있는 Android 여러 수신자 :

<a href="sms://+15552345678, +15552345679;?&body=Hello%20World">Android multiple recipients with body</a>

본문이있는 iOS 여러 수신자 :

<a href="sms://open?addresses=+15552345678,+15552345679;?&body=Hello%20World">iOS multiple recipients with body</a>

본문은 URI로 인코딩되어야합니다.


5

SMS : 및 mailto : 링크를 자바 스크립트없이 iPhone과 Android 모두에서 작동하려면 다음을 시도하세요.

<a href="sms:321-555-1111?&body=This is what I want to sent">click to text</a>


<a href="mailto:someone@sample.com?&subject=My subject&body=This is what I want to sent">click to email</a>

Android 및 iPhone 용 Chrome과 iPhone의 Safari에서 테스트했습니다.
그들은 모두 예상대로 작동했습니다. 그들은 전화 번호 나 이메일 주소 없이도 일했습니다.


4

Bradorego의 솔루션이 저에게 효과적이지만 여기에 더 확장 된 답변이 있습니다.

작은 고려 사항은 %20대신을 사용하여 본문을 인코딩해야한다는 것입니다 +. PHP rawurlencode($body)의 경우urlencode($body) . 그렇지 않으면 공백 대신 이전 버전의 iOS에서 메시지에 더하기 기호가 표시됩니다.

다음은 iOS 장치 용 SMS 링크를 다시 맞추는 jQuery 기능입니다. Android / 기타 기기는 정상적으로 작동하며 코드를 실행하지 않습니다.

HTML :

<a href="sms:+15551231234?body=Hello%20World">SMS "Hello World" to 555-123-1234</a>

jQuery :

(function() {
  if ( !navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ) return;

  jQuery('a[href^="sms:"]').attr('href', function() {
    // Convert: sms:+000?body=example
    // To iOS:  sms:+000;body=example (semicolon, not question mark)
    return jQuery(this).attr('href').replace(/sms:(\+?([0-9]*))?\?/, 'sms:$1;');
  });
})();

가능하면 a.sms-link대신 같은 클래스를 사용하는 a[href^="sms:"]것이 좋습니다.


4
<a href="###" data-telno="13800000000" data-smscontent="hello" class="XXXXX XXXXXX XXXXXX sendsms"/>

$('.sendsms').on('click', function(){
    var p = $(this).data('telno'),
        c = $(this).data('smscontent'),
        t = ';';

    if (!ios) { // add your own iOS check
        t = '?';
    }
    location.href = 'sms:'+ p + t + c;
})

대부분의 Android, IOS 5 및 6에서 작동합니다. IOS 7에서는 작동하지 않습니다.
David C

3

iPhone은 메시지 텍스트를 받아들이지 않고 전화 번호 만받습니다. https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1에서 볼 수 있습니다.


1
이 페이지는 더 이상 액세스 할 수 없습니다
커크 해밋

1
iOS8에서는 더 이상 사실이 아닙니다. <a href="sms:[phone number]&body=body text"> 링크 </a>를 보낼 수 있습니다. 앰퍼샌드는 body = 앞에옵니다. 구문 론적으로 혼란 스럽지만, 저에게 효과적이며 본문은 원하는 메시지로 채워집니다.
Greg Johnson

1
위 링크에 설명 된대로 iOS 10.2가 '본문'부분을 지원하지 않음을 확인했습니다.
Nicodemuz


3

Android를 사용하려면 아래 코드를 사용하십시오.

<a href="sms:+32665?body=reg fb1>Send SMS</a>

iOS의 경우 아래 코드를 사용할 수 있습니다.

<a href="sms:+32665&body=reg fb1>Send SMS</a>

iOS와 Android 모두에서 작동하는 코드 아래

<a href="sms:+32665?&body=reg fb1>Send SMS</a>

2
<a href="sms:/* phone number here */&body=/* body text here */">Link</a>

이것은 내 iPhone 5S에서 작동합니다!


2

대부분의 응용 프로그램에서 누구에게 문자를 보낼지 모를 것이므로 숫자가 아닌 본문 만 채우고 싶을 것입니다. 숫자를 생략하면 예상대로 작동합니다.이 경우 URL은 다음과 같습니다.

sms:?body=message

iOS의 경우를 제외하고는 동일합니다.

sms:;body=message

다음은 SMS를 설정하는 데 사용하는 코드의 예입니다.

var ua = navigator.userAgent.toLowerCase();
var url;

if (ua.indexOf("iphone") > -1 || ua.indexOf("ipad") > -1)
   url = "sms:;body=" + encodeURIComponent("I'm at " + mapUrl + " @ " + pos.Address);
else
   url = "sms:?body=" + encodeURIComponent("I'm at " + mapUrl + " @ " + pos.Address);

   location.href = url;

2

iOS 및 Android에 대해 걱정할 필요가있을뿐만 아니라 어떤 Android 메시징 앱도 있습니다. Note 9 및 일부 새로운 은하 용 Google 메시징 앱은 텍스트로 열리지 않지만 삼성 앱은 작동합니다. 해결책은 sms 뒤에 // 추가하는 것 같습니다.

그래서 sms : // 15551235555

<a href="sms:/* phone number here */?body=/* body text here */">Link</a>

해야한다

<a href="sms://15551235555?body=Hello">Link</a>

이것이 모든 안드로이드에서 작동하는지 아니면 특정 버전에서만 작동하는지 알고 있습니까? 이것은 내 Pixel 2, android 9에서 작동했던 버전입니다
JCisar

나는 내가 테스트 한 오래된 안드로이드에서도 이것에 문제가 없었습니다.
Dan Parker

2
또한 전화 번호를 제공하지 않으면 작동하지 않는 것 같습니다 (원래 질문의 일부는 아니지만 알아두면 유용 할 수 있음)
JCisar

1

(그냥 약간의 주제),하지만 검색하면 여기에서 우연히 발견 할 수 있습니다 ... markdown (parsedown 및 iOS / android에서 테스트)에서 다음을 수행 할 수 있습니다.

   [Link](sms:phone_number,?&body=URL_encoded_body_text)
   //[send sms](sms:1234567890;?&body=my%20very%20interesting%20text)

0

나는에, 그 발견 IOS 7 아이폰 4 이 설치된 에서는 전화 연락처 목록에 전화 번호를 설정해야만 SMS에 본문을 넣을 수 .

따라서 0606060606이 내 연락처의 일부인 경우 다음이 작동합니다.

<a href="sms:0606060606;body=Hello my friend">Send SMS</a>

그건 그렇고, iOS 6 (iPhone 3GS)에서는 본체만으로 작동합니다.

<a href="sms:;body=Hello my friend">Send SMS</a>


-1

클릭-텍스트 링크의 문제 중 하나는 기본 문자 메시지 앱이없는 데스크톱 시나리오를 해결하는 것입니다. 해결책은 Zipwhip의 Click-to-Text 버튼 생성기를 사용하는 것입니다.

  • 데스크톱에서는 사용자의 입력을 통해 실제 실제 텍스트 메시지를 전송합니다.
  • iOS 또는 Android에서는 대신 기본 문자 메시지 기능을 사용할 수 있습니다.

https://www.zipwhip.com/create-sms-button/


전화 번호가 없으면 버튼을 만들 수 없습니다.
Michal

-3

현재 Android와 iPhone 모두 Tap to SMS 하이퍼 링크에서 본문 복사 요소를 지원하지 않습니다. 하지만 프로그래밍 방식으로 수행 할 수 있습니다.

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
picker.messageComposeDelegate = self;

picker.recipients = [NSArray arrayWithObject:@"48151623"];  
picker.body = @"Body text.";

[self presentModalViewController:picker animated:YES];
[picker release];

목표 C입니까? JavaScript에서 어떻게 호출하거나 HTML에서 사용합니까? 불가능한 것 같나요?
스파키 스파이더

수락 된 것으로 표시를 해제 할 수 있습니까? 이것은 질문에 전혀 대답하지 않습니다. 나는 실제로 작동하고 질문에 대답하는 것을 게시했습니다.
Brad Orego
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.