Cách điền trước nội dung sms qua liên kết html


113

Làm cách nào để sử dụng liên kết html để mở ứng dụng sms với phần nội dung được điền sẵn?

Mọi thứ tôi đã đọc dường như chỉ ra rằng sms: 18005555555? Body = bodyTextHere

Sẽ hoạt động, nhưng trên iPhone, điều này không hoạt động. Nếu tôi lấy ra? Body = bodyTextHere và chỉ sử dụng sms: phonenumber, nó sẽ hoạt động.

Tôi đã thấy một số trường hợp mã QR thực hiện điều này thông qua liên kết safari. Làm cách nào để họ có thể điền trước nội dung?


Tôi tự hỏi nếu những máy quét QR đang mở ứng dụng tin nhắn SMS trực tiếp thay vì ...
merlincam

Tôi không nghĩ là có thể. Xem những điều này: stackoverflow.com/questions/10848/… stackoverflow.com/questions/1517169/…
Jason Gennaro

điều này vẫn đúng? Không có phương pháp?
tyler

Điều này là 100% có thể. Xem câu trả lời của tôi dưới đây để biết thông tin.
Brad Orego

Câu trả lời:


178

Hóa ra điều này là có thể 100%, mặc dù hơi khó.

Nếu bạn muốn nó hoạt động trên Android, bạn cần sử dụng định dạng này:

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

Nếu bạn muốn nó hoạt động trên iOS, bạn cần điều này:

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

Bản demo trực tiếp tại đây: http://bradorego.com/test/sms.html (lưu ý rằng "Phone and? Body" và "Phone and; body" sẽ tự động điền cả trường to: và nội dung. Xem nguồn để biết thêm thông tin)

CẬP NHẬT:

Rõ ràng iOS8 phải đi và thay đổi mọi thứ đối với chúng tôi, vì vậy nhờ một số người bình luận / phản hồi khác, có một phong cách mới cho iOS:

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

(số điện thoại là tùy chọn)


5
Lưu ý: Tôi chưa thử nghiệm những điều này trên các phiên bản hệ điều hành mới nhất (iOS7 / iPhone 5S / 5C và Android 4.4). Có một số báo cáo rằng chúng có thể không hoạt động nữa, đặc biệt là khi Android chuyển sang sử dụng Hangouts thay vì ứng dụng SMS gốc. Tôi sẽ xem xét nó khi tôi có cơ hội.
Brad Orego

3
Bây giờ tôi đã xem lại vì nó đôi khi hoạt động và đôi khi không, có vẻ kỳ lạ. Phát hiện của tôi: Nếu bạn quay số mà bạn đã gửi ít nhất một SMS trước đây, liên kết hoạt động tốt với "body". Nếu đó là một con số hoàn toàn mới, bạn sẽ không gặp may và bạn chỉ nhận được con số :(
MMachinegun,

7
Lưu ý lớn : ứng dụng xử lý smsURI có thể được thay đổi trên Android và nhiều nhà sản xuất làm điều này; do đó, mặc dù nó có thể hoạt động trên một thiết bị / ứng dụng cụ thể, nó có thể không hoạt động trên một thiết bị / ứng dụng khác (hoặc đơn giản là sau khi cập nhật). Đề xuất của tôi là không bao giờ sử dụng tính năng này trên Android trừ khi bạn chỉ cài đặt số điện thoại; chỉ sử dụng nó trên các phiên bản iOS và nền tảng không phải Android mà bạn đã thử nghiệm.
fregante

1
@OrangeDog xem câu trả lời của tôi dành cho iOS 7 stackoverflow.com/questions/6480462/...
paaacman

1
không có liên kết nào dường như hoạt động với body trong iOS 11.1
Toskan

49

Tôi biết đây là một chủ đề cũ nhưng tình cờ xem nó và thấy rằng một số phần không còn phù hợp nữa.

Tôi nhận thấy rằng nếu bạn muốn chỉ điền mỗi văn bản mà không cần thêm số điện thoại, bạn có thể làm như sau:

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

1
Đó là câu trả lời mà tôi đang tìm kiếm. Cảm ơn đã giúp đỡ!
Konrad G

1
hoạt động tuyệt vời nhưng khi hoàn thành từ OSX, nó sẽ mở ra một tin nhắn văn bản Tới:, bạn ?có ý kiến ​​gì về cách làm cho nó hiển thị trống không? Tôi đã thử sms:?bodysms:;?body, những lần thử đầu tiên gửi đến? và thứ hai cố gắng gửi đến;
Joshua Ohana

@JoshuaOhana Điều gì xảy ra nếu bạn thử "sms:? 0123456789 & body = My Message"? Xin lỗi, không có quyền truy cập vào bất kỳ thiết bị Apple nào trên tay.
Ali

Không hoạt động cho các thiết bị Android. Chỉ có một cơ thể = không lừa.
Doodlemeat

40

Đối với iOS 8, hãy thử điều này:

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

Chuyển dấu ";" với "&" phù hợp với tôi.


3
fwiw Tôi vừa thử nghiệm điều này trên iOS 10 và nó vẫn hoạt động :).
Rob Dawson

@landen Điều này hoạt động hoàn toàn tốt nếu ứng dụng SMS đã được mở ở chế độ nền. Nếu không, tôi chỉ muốn mở ứng dụng trên điện thoại của mình mà không cần số điện thoại hoặc nội dung tin nhắn. Có ý kiến ​​gì không?
DMEM

31

Chỉ cần đặt tất cả các ký hiệu theo thứ tự này (tôi chỉ thử nghiệm nó theo thứ tự này vì nó hợp lý nhất với tôi).

Thông báo cho liên kết cơ thể ... Tôi chỉ cần đặt ... ;?&body=. Ngoài ra, hãy lưu ý rằng tôi thấy mình cần sử dụng %20cho bất kỳ khoảng trống nào.

Tôi đã thử nghiệm nó trên iphone của mình (v. 9.2) và một android khác và nó hoạt động tốt.

Điều này sẽ giải quyết vấn đề với việc phải hack nó cho các thiết bị khác nhau. Tôi không có hiện vật nào khi tôi kiểm tra nó trong 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>

Chỉ cần xóa số và rời khỏi dấu chấm phẩy (? Sms:; & body = Questi ..) làm việc trên android 7 người đưa tin bản xứ, khi tôi không muốn các số trước các
ibex

Ngày 11 tháng 11 năm 2017: Đã thử trên Aquaris BQ, Nexus, iPhone 7 và LPhone và điều này hoạt động như một sự quyến rũ. Đã thử với nhiều trình duyệt khác nhau (Chrome, Firefox, Opera, native). Cảm ơn rất nhiều!
Urosh T.

Trên Android, nó phụ thuộc vào ứng dụng SMS nào đang được sử dụng. Ví dụ: trên Android 9 với ứng dụng QKSMS, điều này sẽ cố gắng gửi tin nhắn đến;? và cơ thể không được bao gồm. (QKSMS không phải là ứng dụng mặc định, nhưng nó có thể được sử dụng bởi những người không muốn SMS trở thành MMS sau khi đạt đến một kích thước nhất định.) Rất tiếc, không có cách nào để trang HTML xác định ứng dụng SMS nào sẽ được sử dụng. Vì lý do này, tôi sẽ bỏ qua liên kết SMS nếu phát hiện ra Android.
Silas S. Brown

15

Không cần hai thẻ neo riêng biệt cho Android và iOS. Điều này sẽ hữu ích.

// Không có số liên lạc
<a href="sms:?&body=message">Text Message</a>

// Với số liên lạc
<a href="sms:1234567890;?&body=message">Text Message</a>

// Hoạt động trên cả Android và iOS


1
Cảm ơn vì điều này, hoạt động tuyệt vời trên iOS và Android! Hãy chú ý đến Without Contact Numberphiên bản trên MacOS - nó đặt SMS tothành?
Ollie Khakwani

10

Chúng tôi đã tìm thấy một phương pháp được đề xuất và đã thử nghiệm:

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

Đây là kết quả:

  • iPhone4 - lỗi (nội dung tin nhắn trống);
  • Nokia N8 - ok (nội dung tin nhắn - "Xin chào bạn của tôi", Tới "12345678");
  • HTC Mozart - lỗi (thông báo "trang không được hỗ trợ" (sau khi nhấp vào liên kết "Gửi tin nhắn"));
  • HTC Desire - lỗi (thông báo "(Các) người nhận không hợp lệ:
    <12345678? Body = Hellomyfriend>" (sau khi nhấp vào liên kết "Gửi sms")).

Do đó, tôi kết luận rằng nó không thực sự hoạt động - ít nhất là với phương pháp này.


Đối với iPhone4, hãy xem câu trả lời của tôi dưới đây stackoverflow.com/questions/6480462/…
paaacman,

7

Chỉ nội dung Android và iOS :

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

Android và iOS chỉ một người nhận có nội dung:

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

Chỉ Android nhiều người nhận với nội dung:

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

Chỉ iOS nhiều người nhận với nội dung:

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

Lưu ý rằng phần thân phải được mã hóa URI.


5

Để nhận liên kết sms: và mailto: hoạt động trên cả iPhone và Android mà không cần bất kỳ javascript nào, hãy thử cách này:

<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>

Tôi đã thử nghiệm nó trên Chrome dành cho Android và iPhone và Safari trên iPhone.
Tất cả đều hoạt động như mong đợi. Họ đã làm việc mà không cần số điện thoại hoặc địa chỉ email.


4

Giải pháp của Bradorego phù hợp với tôi, nhưng đây là một câu trả lời mở rộng hơn.

Một lưu ý nhỏ là bạn cần mã hóa phần thân bằng cách sử dụng %20thay vì +. Đối với PHP, điều này có nghĩa là sử dụng rawurlencode($body)thay vì urlencode($body). Nếu không, bạn sẽ thấy dấu cộng trong thông báo trên các phiên bản iOS cũ thay vì dấu cách.

Đây là một hàm jQuery sẽ trang bị lại các liên kết SMS của bạn cho các thiết bị iOS. Android / các thiết bị khác sẽ hoạt động bình thường và sẽ không thực thi mã.

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;');
  });
})();

Cân nhắc sử dụng một lớp như a.sms-linkthay vì a[href^="sms:"]nếu có thể.


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;
})

Hoạt động trên hầu hết android, và IOS 5 và 6. Không hoạt động trên IOS 7.
David C

3

IPhone không chấp nhận bất kỳ văn bản tin nhắn nào, nó sẽ chỉ nhận số điện thoại. Bạn có thể xem điều này tại đây https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1


1
Trang này là không thể truy cập được nữa
Kirk Hammett

1
Điều đó không còn đúng với iOS8. Bạn có thể gửi <a href="sms:[phone number]&body=body text"> Liên kết </a> - ký hiệu và đứng trước body =. Có thể nhầm lẫn về mặt cú pháp, nhưng nó hoạt động với tôi và cơ thể sẽ chứa thông điệp mong muốn.
Greg Johnson

1
Đã xác nhận rằng iOS 10.2 không hỗ trợ phần "body" như được mô tả trong liên kết ở trên.
Nicodemuz

Nó có vẻ không còn đúng nữa theo stackoverflow.com/questions/39529099/…
morels

3

Để sử dụng Android, bạn sử dụng mã bên dưới

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

Đối với iOS, bạn có thể sử dụng mã bên dưới

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

mã bên dưới hoạt động cho cả iOs và Android

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

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

Điều này hoạt động trên iPhone 5S của tôi!


2

Tôi nghi ngờ rằng trong hầu hết các ứng dụng, bạn sẽ không biết phải nhắn tin cho ai, vì vậy bạn chỉ muốn điền vào phần nội dung văn bản chứ không phải số. Điều đó hoạt động như bạn mong đợi bằng cách chỉ bỏ số - đây là những gì các URL trông như thế trong trường hợp đó:

sms:?body=message

Đối với iOS, điều tương tự ngoại trừ;

sms:;body=message

Đây là ví dụ về mã tôi sử dụng để thiết lập 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

Bạn không chỉ phải lo lắng về iOS và Android, mà còn có ứng dụng nhắn tin Android nào. Ứng dụng nhắn tin của Google dành cho Note 9 và một số thiên hà mới không mở bằng văn bản, nhưng ứng dụng samsung hoạt động. Giải pháp dường như được thêm // sau sms:

so sms: // 15551235555

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

nên là

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

Bạn có biết nếu điều này hoạt động cho tất cả Android hay chỉ một số phiên bản nhất định? Đây là phiên bản hoạt động cho Pixel 2 của tôi, Android 9
JCisar

Tôi cũng không gặp vấn đề gì với điều này trên các Android cũ hơn mà tôi đã thử nghiệm.
Dan Parker

2
Ngoài ra, nó dường như không làm việc khi bạn không cung cấp một số điện thoại (Tôi biết đó không phải là một phần của câu hỏi ban đầu nhưng nó có thể là hữu ích để biết)
JCisar

1

(Chỉ là một chút chủ đề), nhưng có thể nếu bạn tìm kiếm, bạn có thể gặp phải ở đây ... Trong đánh dấu (đã thử nghiệm với phân tích cú pháp và trên iOS / android), bạn có thể làm:

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

0

Tôi phát hiện ra rằng, trên iPhone 4 với IOS 7 , bạn CÓ THỂ đặt nội dung cho SMS chỉ khi bạn đặt một số điện thoại trong danh sách liên lạc của điện thoại.

Vì vậy, cách sau sẽ hoạt động Nếu 0606060606 là một phần trong danh bạ của tôi:

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

Nhân tiện, trên iOS 6 (iPhone 3GS), nó hoạt động chỉ với một phần thân:

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


-1

Một trong những vấn đề với liên kết nhấp để văn bản là giải quyết tình huống máy tính để bàn không có ứng dụng nhắn tin gốc nào tồn tại. Một giải pháp là sử dụng trình tạo nút Click-to-Text của Zipwhip.

  • Trên máy tính để bàn, họ gửi cho bạn một tin nhắn văn bản thực tế đằng sau hậu trường từ đầu vào của người dùng.
  • Thay vào đó, trên iOS hoặc Android, bạn nhận được chức năng nhắn tin gốc.

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


Không thể tạo nút mà không có số điện thoại.
Michal

-3

Cả Android và iPhone hiện đều không hỗ trợ phần tử sao chép nội dung trong siêu liên kết Nhấn để gửi SMS. Tuy nhiên, nó có thể được thực hiện theo chương trình,

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ó phải là Mục tiêu C không? Làm thế nào để bạn gọi nó từ JavaScript hoặc sử dụng nó trong HTML? Nghe có vẻ không thể?
sparkyspider

Điều này có thể được bỏ đánh dấu là được chấp nhận không? Điều này hoàn toàn không trả lời câu hỏi. Tôi thực sự đã đăng một cái gì đó hoạt động và trả lời câu hỏi.
Brad Orego
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.