Bir html bağlantısı aracılığıyla sms gövde metni nasıl önceden doldurulur


113

SMS uygulamasını önceden doldurulmuş bir gövdeyle açmak için bir html bağlantısı nasıl kullanılır?

Okuduğum her şey sms: 18005555555? Body = bodyTextHere olduğunu gösteriyor

Çalışmalı, ancak iPhone'da bu işe yaramıyor. ? Body = bodyTextHere’ı çıkarırsam ve yalnızca sms: phonenumber kullanırsam, işe yarar.

QR kodlarının bunu bir safari bağlantısı aracılığıyla yaptığı birkaç örnek gördüm. Gövde metnini nasıl önceden doldurabilirler?


Acaba bu QR tarayıcılar bunun yerine doğrudan SMS uygulamasını mı açıyor ...
merlincam


Bu hala doğru mu? Yöntem yok mu?
tyler

Bu% 100 mümkündür. Bilgi için aşağıdaki cevabıma bakın.
Brad Orego

Yanıtlar:


179

Görünüşe göre bu biraz karışık olsa da% 100 mümkün.

Android'de çalışmasını istiyorsanız, bu biçimi kullanmanız gerekir:

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

İOS'ta çalışmasını istiyorsanız, şuna ihtiyacınız var:

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

Canlı demo burada: http://bradorego.com/test/sms.html ("Telefon ve? Gövde" ve "Telefon ve; gövde" hem kime: alanını hem de gövde metnini otomatik olarak doldurmalıdır. Daha fazlası için kaynağı görüntüleyin bilgi)

GÜNCELLEME:

Görünüşe göre iOS8'in bizden bir şeyler değiştirmesi gerekiyordu, bu yüzden diğer yorumcular / yanıtlayıcılar sayesinde iOS için yeni bir tarz var:

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

(telefon numarası isteğe bağlıdır)


5
Not: Bunları en son işletim sistemi sürümlerinde (iOS7 / iPhone 5S / 5C ve Android 4.4) test etmedim. Artık çalışmıyor olabileceklerine dair bazı raporlar var, özellikle Android'in yerel bir SMS uygulaması yerine Hangouts kullanmaya geçmesiyle. Şansım olduğunda onu inceleyeceğim.
Brad Orego

3
Şimdi bir göz attım çünkü bazen çalışıyordu bazen de çalışmıyordu ki bu garip görünüyordu. Bulgularım: Daha önce en az bir SMS gönderdiğiniz bir numarayı çevirirseniz, bağlantı "body" ile sorunsuz çalışır. Tamamen yeni bir sayı ise şansınız kalmaz ve yalnızca şu numarayı alırsınız :(
MMachinegun

7
Büyük not:sms URI'yi işleyen uygulama Android'de değiştirilebilir ve birçok üretici bunu yapar; bu nedenle belirli bir cihazda / uygulamada çalışabilirken, başka bir cihazda çalışmayabilir (veya sadece bir güncellemeden sonra). Benim önerim, yalnızca telefon numarasını ayarlamadığınız sürece bunu Android'de asla kullanmamaktır ; yalnızca iOS sürümlerinde ve test ettiğiniz Android olmayan platformlarda kullanın.
fregante

1
@OrangeDog iOS 7 için cevabımı görün stackoverflow.com/questions/6480462/…
paaacman

1
iOS
11.1'de

49

Bunun eski bir konu olduğunu biliyorum, ancak üzerine tökezledim ve bazı kısımların artık alakalı olmadığını gördüm.

Bir telefon numarası eklemeden metni tek tek doldurmak istiyorsanız, aşağıdakileri yapabileceğinizi buldum:

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

1
Aradığım cevap bu. Yardım için teşekkürler!
Konrad G

1
harika çalışıyor, ancak OSX'ten yapıldığında bir metin mesajı açar Kime:, ?nasıl boş görünmesini sağlayacağınıza dair bir fikriniz var mı? Denedim sms:?bodyve sms:;?bodyilk göndermeyi denedim mi? ve ikincisi göndermeye çalışır;
Joshua Ohana

@JoshuaOhana "sms:? 0123456789 & body = Mesajım" ı denerseniz ne olur? Üzgünüz, elinizde herhangi bir Apple cihazına erişiminiz yok.
Ali

Android cihazlarda çalışmıyor. Sadece bir? Vücut = hile yapar.
Doodlemeat

40

İOS 8 için şunu deneyin:

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

";" "&" ile benim için çalıştı.


3
fwiw Bunu iOS 10'da test ettim ve hala çalışıyor :).
Rob Dawson

@landen Bu, SMS uygulaması arka planda zaten açılmışsa mükemmel şekilde çalışır. Değilse, uygulamanın telefon numarası veya mesaj gövdesi olmadan telefonumda açılmasını sağlıyorum. Herhangi bir fikir?
DMEM

31

Tüm sembolleri bu sıraya koyun (kod açısından en mantıklı olduğu için sadece bu sırayla test ettim).

Vücut bağlantısı için uyarı ... Ben sadece ... koydum ;?&body=. Ayrıca, %20herhangi bir boşluk için kullanmam gerektiğini bulduğuma dikkat edin .

Bunu iphone'umda (v. 9.2) ve başka bir android üzerinde test ettim ve gayet iyi çalışıyor.

Bu, sorunu farklı cihazlar için kesmek zorunda kalmasıyla çözecektir. SMS ile test ettiğimde hiçbir eserim yok.

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

Numarayı kaldırıp noktalı virgülü bırakmak (sms:;? & Body = Questi ..), numaranın önceden doldurulmasını istemediğimde android 7 native messenger üzerinde çalıştı
ibex

2017-11-17: Aquaris BQ, Nexus, iPhone 7 ve LPhone üzerinde denendi ve bu harika çalışıyor. Çeşitli tarayıcılarla denendi (Chrome, Firefox, Opera, native). Çok teşekkürler!
Urosh T.

Android'de hangi SMS uygulamasının kullanıldığına bağlıdır. Örneğin, QKSMS uygulamasıyla Android 9'da, bu;? Adresine bir mesaj göndermeye çalışır; ve gövde dahil değildir. (QKSMS varsayılan uygulama değildir, ancak SMS'in belirli bir boyuta ulaştıktan sonra MMS olmasını istemeyen kişiler tarafından kullanılıyor olabilir.) Ne yazık ki HTML sayfasının hangi SMS uygulamasının olacağını belirlemesinin bir yolu yoktur. kullanımda olmak. Bu nedenle, Android tespit edersem SMS bağlantılarını atlayacağım.
Silas S. Brown

15

Android ve iOS için iki ayrı bağlantı etiketine gerek yoktur. Bu yardımcı olmalı.

// İletişim Numarası Olmadan
<a href="sms:?&body=message">Text Message</a>

// İletişim Numarası ile
<a href="sms:1234567890;?&body=message">Text Message</a>

// Hem Android hem de iOS'ta çalışır


1
Bunun için teşekkürler, iOS ve Android'de harika çalışıyor! Dikkat Without Contact NumberMacOS sürümden - bu SMS setleri toiçin?
Ollie Khakwani

10

Önerilen bir yöntem bulduk ve test ettik:

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

Sonuçlar burada:

  • iPhone4 - hata (boş mesaj gövdesi);
  • Nokia N8 - tamam (mesaj gövdesi - "Merhaba arkadaşım", "12345678" e);
  • HTC Mozart - hata ("desteklenmeyen sayfa" mesajı ("SMS gönder" bağlantısına tıkladıktan sonra));
  • HTC Desire - hata (mesaj "Geçersiz alıcılar:
    <12345678? Body = Hellomyfriend>" ("SMS gönder" bağlantısına tıkladıktan sonra)).

Bu nedenle, gerçekten işe yaramadığına karar verdim - en azından bu yöntemle.


İPhone4 için
cevabıma

8

Yalnızca Android ve iOS gövdesi:

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

Android ve iOS yalnızca body ile tek alıcı:

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

Yalnızca gövdeye sahip Android birden çok alıcı:

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

Yalnızca gövdeye sahip iOS birden çok alıcı:

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

Gövdenin URI kodlu olması gerektiğini unutmayın.


5

Herhangi bir javascript olmadan hem iPhone hem de Android'de çalışmak üzere sms: ve mailto: bağlantıları almak için şunu deneyin:

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

Bunu Android ve iPhone için Chrome'da ve iPhone'da Safari'de test ettim.
Hepsi beklendiği gibi çalıştı. Telefon numarası veya e-posta adresi olmadan da çalıştılar.


4

Bradorego'nun çözümü benim için işe yarayan şeydi, ancak burada daha geniş bir yanıt var.

Küçük bir husus, vücudu %20yerine kullanarak kodlamanız gerektiğidir +. PHP için bu, rawurlencode($body)yerine kullanmak anlamına gelir urlencode($body). Aksi takdirde, iOS'un eski sürümlerinde boşluk yerine mesajda artı işaretleri görürsünüz.

İOS cihazları için SMS bağlantılarınızı yeniden düzenleyecek bir jQuery işlevi burada. Android / diğer cihazlar normal şekilde çalışmalı ve kodu yürütmemelidir.

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

Mümkünse a.sms-linkyerine bir sınıf kullanmayı düşünün 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;
})

Çoğu android ve IOS 5 ve 6'da çalışır. IOS 7'de çalışmaz.
David C

3

İPhone herhangi bir mesaj metnini kabul etmiyor, sadece telefon numarasını alacak. Bunu şurada görebilirsiniz https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1


1
bu sayfaya artık erişilemez
Kirk Hammett

1
Bu artık iOS8 için geçerli değil. <a href="sms:[phone number]&body=body text"> Link </a> gönderebilirsiniz - ve işareti body = işaretinden önce gelir. Sözdizimsel olarak kafa karıştırıcı, evet, ama benim için işe yarıyor ve vücut istenen mesajla doluyor.
Greg Johnson

1
İOS 10.2'nin yukarıdaki bağlantıda açıklandığı gibi bir "gövde" bölümünü desteklemediğini doğruladı.
Nicodemuz


3

Android'i kullanmak için aşağıdaki kodu kullanın

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

İOS için aşağıdaki kodu kullanabilirsiniz

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

Hem iO'lar hem de Android için çalışan aşağıdaki kod

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

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

Bu, iPhone 5S'imde çalışıyor!


2

Çoğu uygulamada kime mesaj göndereceğinizi bilmeyeceğinizden şüpheleniyorum, bu nedenle numarayı değil, yalnızca metin gövdesini doldurmak istiyorsunuz. Bu, yalnızca numarayı bırakarak beklediğiniz gibi çalışır - bu durumda URL'ler şu şekilde görünür:

sms:?body=message

İOS için aynı şey hariç;

sms:;body=message

SMS'i ayarlamak için kullandığım koda bir örnek:

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

Sadece iOS ve Android için endişelenmenize gerek yok, aynı zamanda hangi android mesajlaşma uygulaması da var. Note 9 için Google mesajlaşma uygulaması ve bazı yeni galaksiler metinle açılmaz, ancak samsung uygulaması çalışır. Çözüm sms'den sonra // eklenmiş gibi görünüyor:

yani sms: // 15551235555

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

olmalı

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

Bunun tüm androidler için mi yoksa sadece belirli sürümler için mi çalıştığını biliyor musunuz? Bu benim Pixel 2, android 9
JCisar

Ben de test ettiğim eski androidlerde bununla ilgili hiçbir sorun yaşamadım.
Dan Parker

2
Ayrıca, bir telefon numarası vermediğinizde de işe yaramıyor gibi görünüyor (bunun asıl sorunun bir parçası olmadığını biliyorum, ancak bilmek faydalı olabilir)
JCisar

1

(Sadece biraz konu), ama belki ararsanız burada yanılabilirsiniz ... Markdown'da (ayrıştırılmış ve iOS / android üzerinde test edilmiştir) şunları yapabilirsiniz:

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

0

IOS 7 ile iPhone 4'te, yalnızca telefonun kişi listesinde bir telefon numarası ayarlarsanız SMS'e bir gövde koyabileceğinizi öğrendim .

Dolayısıyla, 0606060606 kişilerimin bir parçasıysa aşağıdakiler işe yarar:

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

Bu arada, iOS 6'da (iPhone 3GS) sadece bir gövdeyle çalışıyor:

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


-1

Metne tıkla bağlantısıyla ilgili sorunlardan biri, yerel mesajlaşma uygulamasının bulunmadığı masaüstü senaryosunu çözmektir. Çözüm, Zipwhip'in Tıkla-Metin düğmesi oluşturucusunu kullanmaktır.

  • Masaüstünde, size kullanıcının girişinden perde arkasında gerçek bir gerçek metin mesajı gönderir.
  • İOS veya Android'de bunun yerine yerel mesajlaşma işlevini alırsınız.

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


Telefon numarası olmadan düğme oluşturulamaz.
Michal

-3

Ne Android ne de iPhone'lar şu anda SMS için Dokun köprüsündeki gövde kopyalama öğesini desteklemiyor. Yine de programlı olarak yapılabilir,

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

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

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

Bu Hedef C mi? Bunu JavaScript'ten nasıl çağırırsınız veya HTML'de kullanırsınız? İmkansız geliyor mu?
sparkyspider

Bu lütfen kabul edildi olarak işaretlenmemiş olabilir mi? Bu soruya hiç cevap vermiyor. Aslında işe yarayan ve soruyu cevaplayan bir şey yayınladım.
Brad Orego
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.