Cara mengisi teks badan sms terlebih dahulu melalui tautan html

113

Bagaimana cara menggunakan tautan html untuk membuka aplikasi sms dengan isi yang telah diisi sebelumnya?

Semua yang telah saya baca sepertinya menunjukkan bahwa sms: 18005555555? Body = bodyTextHere

Seharusnya berfungsi, tetapi di iPhone, ini tidak berfungsi. Jika saya mengeluarkan? Body = bodyTextHere, dan hanya menggunakan sms: phonenumber, ini berfungsi.

Saya telah melihat beberapa contoh di mana kode QR melakukan ini melalui tautan safari. Bagaimana mereka dapat mengisi teks tubuh terlebih dahulu?

merlincam
sumber
Saya ingin tahu apakah pemindai QR ini membuka aplikasi SMS secara langsung ...
merlincam
Saya rasa itu tidak mungkin. Lihat ini: stackoverflow.com/questions/10848/… stackoverflow.com/questions/1517169/…
Jason Gennaro
ini masih benar? Tidak ada metode?
Tyler
Ini 100% mungkin. Lihat jawaban saya di bawah untuk info.
Brad Orego

Jawaban:

178

Ternyata ini 100% mungkin, meski sedikit hacky.

Jika Anda ingin berfungsi di Android, Anda perlu menggunakan format ini:

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

Jika Anda ingin berfungsi di iOS, Anda memerlukan ini:

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

Demo langsung di sini: http://bradorego.com/test/sms.html (perhatikan "Phone and? Body" dan "Phone and; body" harus mengisi otomatis kolom to: dan teks body. Lihat sumber untuk selengkapnya info)

MEMPERBARUI:

Rupanya iOS8 harus pergi dan mengubah banyak hal pada kami, jadi terima kasih kepada beberapa pemberi komentar / responden lainnya, ada gaya baru untuk iOS:

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

(nomor telepon adalah opsional)

Brad Orego
sumber
5
Catatan: Saya belum menguji ini pada versi OS terbaru (iOS7 / iPhone 5S / 5C dan Android 4.4). Ada beberapa laporan bahwa mereka mungkin tidak berfungsi lagi, terutama dengan peralihan Android untuk menggunakan Hangouts daripada aplikasi SMS asli. Saya akan memeriksanya ketika saya memiliki kesempatan.
Brad Orego
3
Saya melihatnya sekarang karena terkadang berhasil dan terkadang tidak, yang tampak aneh. Temuan saya: Jika Anda menghubungi nomor yang sebelumnya telah Anda kirimi satu SMS, tautannya berfungsi dengan baik dengan "body". Jika itu adalah nomor baru yang lengkap, Anda kurang beruntung dan Anda hanya mendapatkan nomor :(
MMachinegun
7
Big catatan: aplikasi yang menangani para smsURI dapat diubah pada Android dan banyak produsen melakukan hal ini; oleh karena itu, meskipun dapat bekerja pada perangkat / aplikasi tertentu, ini mungkin tidak berfungsi pada perangkat lain (atau hanya setelah pembaruan). Saran saya adalah jangan pernah menggunakan ini di Android kecuali Anda hanya menyetel nomor telepon; hanya gunakan pada versi iOS dan platform non-Android yang telah Anda uji.
fregante
1
@OrangeDog lihat jawaban saya untuk iOS 7 stackoverflow.com/questions/6480462/…
paaacman
1
tidak ada tautan yang tampaknya berfungsi dengan tubuh di iOS 11.1
Toskan
49

Saya tahu ini adalah utas lama tetapi saya menemukannya dan menemukan bahwa beberapa bagian tidak lagi relevan.

Saya telah menemukan bahwa jika Anda hanya ingin mengisi teks tanpa menambahkan nomor telepon, Anda dapat melakukan hal berikut:

sms:?&body=/* message body here */
Ali
sumber
1
Itulah jawaban yang selama ini saya cari. Terima kasih untuk bantuannya!
Konrad G
1
bekerja dengan baik tetapi ketika selesai dari OSX itu membuka pesan teks Ke ?:, ada ide bagaimana membuatnya muncul kosong? Saya mencoba sms:?bodydan sms:;?body, yang pertama mencoba mengirim ke? dan yang kedua mencoba mengirim ke;
Joshua Ohana
@JoshuaOhana Apa yang terjadi jika Anda mencoba "sms:? 0123456789 & body = My Message"? Maaf, tidak memiliki akses ke perangkat Apple apa pun.
Ali
Tidak berfungsi untuk perangkat Android. Hanya? Body = yang berhasil.
Doodlemeat
40

Untuk iOS 8, coba ini:

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

Mengalihkan ";" dengan "&" berhasil untuk saya.

landen
sumber
3
fwiw Saya baru saja menguji ini di iOS 10 dan masih berfungsi :).
Rob Dawson
@landen Ini berfungsi dengan baik jika aplikasi SMS sudah dibuka di latar belakang. Jika tidak, saya baru saja membuka aplikasi di ponsel saya, tanpa nomor telepon atau badan pesan. Ada ide?
DMEM
31

Letakkan saja semua simbol dalam urutan ini (saya hanya mengujinya dalam urutan ini karena menurut saya kode tersebut paling masuk akal).

Pemberitahuan untuk link tubuh ... Aku hanya menempatkan ... ;?&body=. Juga, perhatikan bahwa saya merasa perlu saya gunakan %20untuk spasi apa pun.

Saya telah mengujinya di iphone saya (v. 9.2) dan android lain dan berfungsi dengan baik.

Ini akan menyelesaikan masalah karena harus meretasnya untuk perangkat yang berbeda. Saya tidak memiliki artefak saat mengujinya di 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>
Nathan Sharfi
sumber
Hanya menghapus nomor dan meninggalkan titik koma (sms:;? & Body = Questi ..) berfungsi pada Android 7 native messenger, ketika saya tidak ingin nomor tersebut terisi terlebih dahulu
ibex
2017-11-17: Telah dicoba pada Aquaris BQ, Nexus, iPhone 7 dan LPhone dan ini bekerja dengan sangat baik. Mencoba dengan berbagai browser (Chrome, Firefox, Opera, native). Terima kasih banyak!
Urosh T.Nov
Di Android, itu tergantung pada aplikasi SMS mana yang digunakan. Misalnya, di Android 9 dengan aplikasi QKSMS, ini mencoba mengirim pesan ke;? dan tubuh tidak termasuk. (QKSMS bukan aplikasi default, tetapi dapat digunakan oleh orang yang tidak ingin SMS menjadi MMS setelah mencapai ukuran tertentu.) Sayangnya, tidak ada cara bagi halaman HTML untuk menentukan aplikasi SMS mana yang akan digunakan. sedang digunakan. Untuk alasan ini saya akan menghilangkan tautan SMS jika saya mendeteksi Android.
Silas S. Brown
15

Tidak perlu dua tag anchor terpisah untuk Android dan iOS. Ini akan membantu.

// Tanpa Nomor Kontak
<a href="sms:?&body=message">Text Message</a>

// Dengan Nomor Kontak
<a href="sms:1234567890;?&body=message">Text Message</a>

// Bekerja di Android dan iOS

aayushdrolia.dll
sumber
1
Terima kasih untuk ini, berfungsi dengan baik di iOS dan Android! Hati-hati untuk Without Contact Numberversi di MacOS - ini mengatur SMS toke?
Ollie Khakwani
10

Kami menemukan metode yang diusulkan dan menguji:

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

Berikut hasilnya:

  • iPhone4 - kesalahan (badan pesan kosong);
  • Nokia N8 - ok (isi pesan - "Hello my friend", To "12345678");
  • HTC Mozart - kesalahan (pesan "halaman tidak didukung" (setelah klik pada link "Kirim sms"));
  • HTC Desire - kesalahan (pesan "Penerima tidak valid:
    <12345678? Body = Hellomyfriend>" (setelah klik pada link "Kirim sms")).

Karena itu saya menyimpulkan itu tidak benar-benar berfungsi - setidaknya dengan metode ini.

Ben
sumber
Untuk iPhone4, lihat jawaban saya di bawah stackoverflow.com/questions/6480462/…
paaacman
8

Hanya bodi Android dan iOS :

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

Android dan iOS hanya satu penerima dengan tubuh:

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

Hanya beberapa penerima Android dengan tubuh:

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

Hanya beberapa penerima iOS dengan tubuh:

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

Perhatikan bahwa badan harus dienkode URI.

MahMoos
sumber
5

Untuk mendapatkan sms: dan mailto: tautan agar berfungsi baik di iPhone dan Android, tanpa javascript, coba ini:

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


<a href="mailto:[email protected]?&subject=My subject&body=This is what I want to sent">click to email</a>

Saya mengujinya di Chrome untuk Android & iPhone, dan Safari di iPhone.
Mereka semua bekerja seperti yang diharapkan. Mereka bekerja tanpa nomor telepon atau alamat email juga.

Debbie V
sumber
4

Solusi Bradorego adalah yang berhasil untuk saya, tetapi ini adalah jawaban yang lebih luas.

Pertimbangan kecil adalah Anda perlu menyandikan tubuh menggunakan, %20bukan +. Untuk PHP, ini berarti menggunakan rawurlencode($body)sebagai pengganti urlencode($body). Jika tidak, Anda akan melihat tanda plus di pesan di versi lama iOS, bukan spasi.

Ini adalah fungsi jQuery yang akan memperbaiki tautan SMS Anda untuk perangkat iOS. Android / perangkat lain seharusnya berfungsi normal dan tidak akan menjalankan kode.

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

Pertimbangkan untuk menggunakan kelas seperti a.sms-linkdaripada a[href^="sms:"]jika memungkinkan.

Radley Sustaire
sumber
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;
})
hkongm
sumber
Bekerja pada sebagian besar android, dan IOS 5 dan 6. Tidak bekerja pada IOS 7.
David C
3

IPhone tidak menerima teks pesan apa pun, itu hanya akan menerima nomor telepon. Anda dapat melihat ini di sini https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1

AZ
sumber
1
halaman ini tidak dapat diakses lagi
Kirk Hammett
1
Itu tidak lagi benar dengan iOS8. Anda dapat mengirim <a href="sms:[phone number]&body=body text"> Tautan </a> - simbol dan sebelum body =. Secara sintaksis membingungkan, ya, tetapi berfungsi untuk saya dan isi pesan yang diinginkan.
Greg Johnson
1
Dikonfirmasi bahwa iOS 10.2 tidak mendukung bagian "badan" seperti yang dijelaskan pada tautan di atas.
Nicodemuz
Tampaknya tidak benar lagi menurut stackoverflow.com/questions/39529099/…
morels
3

Untuk menggunakan Android Anda menggunakan kode di bawah ini

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

Untuk iOS Anda dapat menggunakan kode di bawah ini

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

kode di bawah ini berfungsi untuk iOS dan Android

<a href="sms:+32665?&body=reg fb1>Send SMS</a>
Pankaj Chauhan
sumber
2
<a href="sms:/* phone number here */&body=/* body text here */">Link</a>

Ini berfungsi di iPhone 5S saya!

Kim
sumber
2

Saya menduga di sebagian besar aplikasi Anda tidak akan tahu siapa yang harus dikirimi SMS, jadi Anda hanya ingin mengisi badan teks, bukan nomornya. Itu berfungsi seperti yang Anda harapkan dengan membiarkan nomornya - inilah tampilan URL dalam kasus itu:

sms:?body=message

Untuk iOS hal yang sama kecuali dengan;

sms:;body=message

Berikut adalah contoh kode yang saya gunakan untuk mengatur 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;
Lemon Kazi
sumber
2

Nah Anda tidak hanya perlu khawatir tentang iOS dan Android, ada juga aplikasi perpesanan android yang mana. Aplikasi perpesanan Google untuk Note 9 dan beberapa galaksi baru tidak terbuka dengan teks, tetapi aplikasi samsung berfungsi. Solusinya sepertinya tambahkan // setelah sms:

jadi sms: // 15551235555

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

seharusnya

<a href="sms://15551235555?body=Hello">Link</a>
Dan Parker
sumber
Apakah Anda tahu apakah ini berfungsi untuk semua Android atau hanya versi tertentu? Ini adalah versi yang berfungsi untuk Pixel 2 saya, android 9
JCisar
Saya tidak punya masalah dengan ini di Android lama yang saya uji juga.
Dan Parker
2
Juga, sepertinya tidak berfungsi jika Anda tidak memberikan nomor telepon (saya tahu itu bukan bagian dari pertanyaan awal tapi mungkin berguna untuk mengetahuinya)
JCisar
1

(Hanya sedikit topik), tapi mungkin jika Anda mencari Anda bisa tersandung di sini ... Dalam penurunan harga (diuji dengan parsedown dan di iOS / android) Anda dapat melakukan:

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

Saya menemukan bahwa, pada iPhone 4 dengan IOS 7 , Anda DAPAT memasukkan tubuh ke SMS hanya jika Anda mengatur nomor telepon dalam daftar kontak telepon.

Jadi berikut ini akan berfungsi Jika 0606060606 adalah bagian dari kontak saya:

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

Omong-omong, di iOS 6 (iPhone 3GS), ini bekerja hanya dengan satu badan:

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

Setiap versi OS memiliki cara yang berbeda untuk melakukannya. Lihatlah perpustakaan sms-link

Ghigo
sumber
-1

Salah satu masalah dengan tautan klik-ke-teks adalah menyelesaikan skenario desktop ketika tidak ada aplikasi SMS asli. Solusinya adalah dengan menggunakan pembuat tombol Click-to-Text Zipwhip.

  • Di desktop, mereka mengirimi Anda pesan teks yang sebenarnya di belakang layar dari masukan pengguna.
  • Di iOS atau Android, Anda mendapatkan fungsionalitas SMS asli.

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

John Lauer
sumber
Tidak dapat membuat tombol tanpa nomor telepon.
Michal
-3

Baik Android maupun iPhone saat ini tidak mendukung elemen body copy di hyperlink Tap to SMS. Itu bisa dilakukan secara terprogram,

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

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

[self presentModalViewController:picker animated:YES];
[picker release];
Iñigo Beitia
sumber
Apakah itu Objective C? Bagaimana Anda menyebutnya dari JavaScript atau menggunakannya dalam HTML? Kedengarannya tidak mungkin?
sparkyspider
Bisakah ini tidak ditandai sebagai diterima? Ini sama sekali tidak menjawab pertanyaan itu. Saya sebenarnya memposting sesuatu yang berfungsi dan menjawab pertanyaan itu.
Brad Orego