So füllen Sie den SMS-Text über einen HTML-Link vor

112

Wie benutze ich einen HTML-Link, um die SMS-App mit einem vorgefüllten Körper zu öffnen?

Alles, was ich gelesen habe, scheint darauf hinzudeuten, dass SMS: 18005555555? Body = bodyTextHere

Sollte funktionieren, aber auf dem iPhone funktioniert dies nicht. Wenn ich das? Body = bodyTextHere herausnehme und einfach sms: phonenumber benutze, funktioniert es.

Ich habe mehrere Fälle gesehen, in denen QR-Codes dies über einen Safari-Link tun. Wie können sie den Textkörper vorab ausfüllen?

Merlincam
quelle
Ich frage mich, ob diese QR-Scanner die SMS-App stattdessen direkt
öffnen
Ich denke nicht, dass es möglich ist. Siehe diese: stackoverflow.com/questions/10848/… stackoverflow.com/questions/1517169/…
Jason Gennaro
das ist immer noch wahr? Keine Methode?
Tyler
Dies ist zu 100% möglich. Siehe meine Antwort unten für Informationen.
Brad Orego

Antworten:

177

Es stellt sich heraus, dass dies zu 100% möglich ist, wenn auch etwas hackig.

Wenn es unter Android funktionieren soll, müssen Sie dieses Format verwenden:

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

Wenn Sie möchten, dass es unter iOS funktioniert, benötigen Sie Folgendes:

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

Live-Demo hier: http://bradorego.com/test/sms.html (Beachten Sie, dass "Phone and? Body" und "Phone and; body" sowohl das Feld to: als auch den Text text automatisch ausfüllen sollten. Weitere Informationen finden Sie in der Quelle die Info)

AKTUALISIEREN:

Anscheinend musste iOS8 etwas an uns ändern, und dank einiger anderer Kommentatoren / Responder gibt es einen neuen Stil für iOS:

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

(Telefonnummer ist optional)

Brad Orego
quelle
5
Hinweis: Ich habe diese nicht auf den neuesten Betriebssystemversionen (iOS7 / iPhone 5S / 5C und Android 4.4) getestet. Es gibt einige Berichte, dass sie möglicherweise nicht mehr funktionieren, insbesondere mit der Umstellung von Android auf Hangouts anstelle einer nativen SMS-App. Ich werde es untersuchen, wenn ich die Chance habe.
Brad Orego
3
Ich habe jetzt einen Blick darauf geworfen, weil es manchmal funktionierte und manchmal nicht, was seltsam schien. Meine Ergebnisse: Wenn Sie eine Nummer wählen, die Sie zuvor mindestens eine SMS gesendet haben, funktioniert der Link mit "body" einwandfrei. Wenn es sich um eine komplett neue Nummer handelt, haben Sie kein Glück und erhalten nur die Nummer :(
MMachinegun
7
Großer Hinweis: Die App, die den smsURI verarbeitet, kann unter Android geändert werden, und viele Hersteller tun dies. Daher funktioniert es möglicherweise nicht auf einem anderen Gerät / einer bestimmten App (oder einfach nach einem Update). Mein Vorschlag ist, dies niemals unter Android zu verwenden, es sei denn, Sie stellen nur die Telefonnummer ein. Verwenden Sie es nur auf iOS-Versionen und Nicht-Android-Plattformen, die Sie getestet haben.
Fregante
1
@OrangeDog siehe meine Antwort für iOS 7 stackoverflow.com/questions/6480462/…
paaacman
1
Keiner der Links scheint mit Body in iOS 11.1
Toskan
49

Ich weiß, dass dies ein alter Thread ist, bin aber darauf gestoßen und habe festgestellt, dass einige Teile nicht mehr relevant sind.

Ich habe festgestellt, dass Sie Folgendes tun können, wenn Sie den Text nur einzeln hinzufügen möchten, ohne eine Telefonnummer hinzuzufügen:

sms:?&body=/* message body here */
Ali
quelle
1
Das ist die Antwort, nach der ich gesucht habe. Danke für die Hilfe!
Konrad G
1
funktioniert gut, aber wenn es unter OSX fertig ist, wird eine Textnachricht geöffnet. An: Gibt es eine ?Idee, wie es leer angezeigt werden kann? Ich habe versucht sms:?bodyund sms:;?body, die ersten Versuche zu senden? und der zweite versucht zu senden;
Joshua Ohana
@JoshuaOhana Was passiert, wenn Sie "sms :? 0123456789 & body = My Message" versuchen? Leider haben Sie keinen Zugriff auf Apple-Geräte.
Ali
Funktioniert nicht für Android-Geräte. Nur ein? Body = macht den Trick.
Doodlemeat
40

Versuchen Sie für iOS 8 Folgendes:

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

Umschalten des ";" mit einem "&" arbeitete für mich.

landen
quelle
3
fwiw Ich habe das gerade auf iOS 10 getestet und es funktioniert immer noch :).
Rob Dawson
@landen Dies funktioniert einwandfrei, wenn die SMS-App bereits im Hintergrund geöffnet wurde. Wenn dies nicht der Fall ist, wird die App nur auf meinem Telefon ohne Telefonnummer oder Nachrichtentext geöffnet. Irgendwelche Ideen?
DMEM
31

Bringen Sie einfach alle Symbole in diese Reihenfolge (ich habe es nur in dieser Reihenfolge getestet, da es für mich in Bezug auf den Code am sinnvollsten ist).

Hinweis für den Körper Link ... Ich habe gerade setzen ... ;?&body=. Beachten Sie auch, dass ich festgestellt habe, dass ich %20für alle Räume verwenden muss.

Ich habe es auf meinem iPhone (Version 9.2) und einem anderen Android getestet und es funktioniert einwandfrei.

Dies wird das Problem lösen, dass es für verschiedene Geräte gehackt werden muss. Ich habe keine Artefakte, als ich es in der SMS getestet habe.

<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
quelle
Nur die Nummer zu entfernen und das Semikolon (SMS :;? & Body = Questi ..) zu verlassen, funktionierte auf Android 7 Native Messenger, als ich nicht wollte, dass die Nummer vorab ausgefüllt wurde
Steinbock
2017-11-17: Versucht auf Aquaris BQ, Nexus, iPhone 7 und LPhone und dies funktioniert wie ein Zauber. Versucht mit verschiedenen Browsern (Chrome, Firefox, Opera, native). Vielen Dank!
Urosh T.
Unter Android hängt es davon ab, welche SMS-App verwendet wird. Unter Android 9 mit der QKSMS-App wird beispielsweise versucht, eine Nachricht an zu senden :? und der Körper ist nicht enthalten. (QKSMS ist nicht die Standard-App, kann jedoch von Personen verwendet werden, die nicht möchten, dass die SMS nach Erreichen einer bestimmten Größe zu einer MMS wird.) Leider kann die HTML-Seite nicht bestimmen, welche SMS-App verwendet werden soll in Gebrauch sein. Aus diesem Grund werde ich SMS-Links weglassen, wenn ich Android erkenne.
Silas S. Brown
15

Für Android und iOS sind keine zwei separaten Ankertags erforderlich. Das sollte helfen.

// Ohne Kontaktnummer
<a href="sms:?&body=message">Text Message</a>

// Mit Kontaktnummer
<a href="sms:1234567890;?&body=message">Text Message</a>

// Funktioniert sowohl auf Android als auch auf iOS

aayushdrolia
quelle
1
Vielen Dank dafür, funktioniert hervorragend auf iOS und Android! Achten Sie auf die Without Contact NumberVersion unter MacOS - sie setzt die SMS toauf?
Ollie Khakwani
10

Wir haben eine vorgeschlagene Methode gefunden und getestet:

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

Hier sind die Ergebnisse:

  • iPhone4 - Fehler (leerer Nachrichtentext);
  • Nokia N8 - ok (Nachrichtentext - "Hallo mein Freund", zu "12345678");
  • HTC Mozart - Fehler (Meldung "Nicht unterstützte Seite" (nach Klick auf den Link "SMS senden"));
  • HTC Desire - Fehler (Meldung "Ungültige Empfänger:
    <12345678? Body = Hellomyfriend>" (nach dem Klicken auf den Link "SMS senden")).

Ich komme daher zu dem Schluss, dass es nicht wirklich funktioniert - zumindest mit dieser Methode.

Ben
quelle
Für iPhone4 siehe meine Antwort unten stackoverflow.com/questions/6480462/…
paaacman
7

Nur für Android und iOS :

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

Android und iOS ein Empfänger nur mit Körper:

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

Nur Android mehrere Empfänger mit Körper:

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

Nur iOS mehrere Empfänger mit Körper:

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

Beachten Sie, dass der Body URI-codiert sein sollte.

MahMoos
quelle
5

Versuchen Sie Folgendes, um SMS- und Mailto: -Links zu erhalten, die sowohl auf dem iPhone als auch auf Android ohne Javascript funktionieren:

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

Ich habe es auf Chrome für Android & iPhone und Safari auf dem iPhone getestet.
Sie alle arbeiteten wie erwartet. Sie arbeiteten auch ohne Telefonnummer oder E-Mail-Adresse.

Debbie V.
quelle
4

Bradoregos Lösung hat bei mir funktioniert, aber hier ist eine ausführlichere Antwort.

Eine kleine Überlegung ist, dass Sie den Körper mit %20anstatt codieren müssen +. Für PHP bedeutet dies, dass rawurlencode($body)anstelle von verwendet wird urlencode($body). Andernfalls werden in der Meldung bei alten Versionen von iOS anstelle von Leerzeichen Pluszeichen angezeigt.

Hier ist eine jQuery-Funktion, mit der Sie Ihre SMS-Links für iOS-Geräte anpassen können. Android / andere Geräte sollten normal funktionieren und den Code nicht ausführen.

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

Erwägen Sie die Verwendung einer Klasse wie a.sms-linkanstelle von, a[href^="sms:"]wenn möglich.

Radley Sustaire
quelle
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
quelle
Funktioniert auf den meisten Android und IOS 5 und 6. Funktioniert nicht auf IOS 7.
David C
3

Das iPhone akzeptiert keinen Nachrichtentext, sondern nur die Telefonnummer. Sie können dies hier sehen https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1

AZ
quelle
1
Diese Seite ist nicht mehr zugänglich
Kirk Hammett
1
Das stimmt mit iOS8 nicht mehr. Sie können <a href="sms:[phone number‹&body=body text"> Link </a> senden - das kaufmännische Und steht vor dem body =. Syntaktisch verwirrend, ja, aber es funktioniert für mich und der Körper füllt sich mit der gewünschten Nachricht.
Greg Johnson
1
Bestätigt, dass iOS 10.2 kein "Körperteil" unterstützt, wie im obigen Link beschrieben.
Nikodemuz
Es scheint nicht mehr wahr zu sein laut stackoverflow.com/questions/39529099/…
Morcheln
3

Für die Verwendung von Android verwenden Sie den folgenden Code

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

Für iOS können Sie den folgenden Code verwenden

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

Der folgende Code funktioniert sowohl für iOS als auch für Android

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

Das funktioniert auf meinem iPhone 5S!

Kim
quelle
2

Ich vermute, dass Sie in den meisten Anwendungen nicht wissen, wen Sie schreiben sollen, also möchten Sie nur den Textkörper und nicht die Nummer ausfüllen. Das funktioniert wie erwartet, wenn Sie nur die Nummer weglassen. So sehen die URLs in diesem Fall aus:

sms:?body=message

Für iOS das gleiche außer mit dem;

sms:;body=message

Hier ist ein Beispiel für den Code, mit dem ich die SMS einrichte:

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;
Zitrone Kazi
quelle
2

Nun, Sie müssen sich nicht nur um iOS und Android kümmern, es gibt auch welche Android Messaging App. Die Google Messaging App für Note 9 und einige neue Galaxien werden nicht mit Text geöffnet, aber die Samsung App funktioniert. Die Lösung scheint // nach der SMS hinzuzufügen:

so sms: // 15551235555

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

sollte sein

<a href="sms://15551235555?body=Hello">Link</a>
Dan Parker
quelle
Wissen Sie, ob dies für alle Android oder nur bestimmte Versionen funktioniert? Dies ist die Version, die für mein Pixel 2, Android 9
JCisar
Ich hatte keine Probleme damit bei älteren Androiden, die ich ebenfalls getestet habe.
Dan Parker
2
Außerdem scheint es nicht zu funktionieren, wenn Sie keine Telefonnummer
angeben
1

(Nur ein kleines Thema), aber wenn Sie suchen, könnten Sie hier stolpern ... In Markdown (getestet mit Parsedown und auf iOS / Android) könnten Sie Folgendes tun:

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

Ich habe herausgefunden, dass Sie auf dem iPhone 4 mit IOS 7 nur dann einen Text in die SMS einfügen können, wenn Sie eine Telefonnummer in der Kontaktliste des Telefons festgelegt haben.

Folgendes funktioniert also, wenn 0606060606 Teil meiner Kontakte ist:

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

Unter iOS 6 (iPhone 3GS) funktioniert es übrigens nur mit einem Körper:

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

Jede Betriebssystemversion hat eine andere Vorgehensweise. Schauen Sie sich die SMS-Link-Bibliothek an

Ghigo
quelle
-1

Eines der Probleme mit einem Click-to-Text-Link ist das Lösen des Desktop-Szenarios, in dem keine native Texting-App vorhanden ist. Eine Lösung besteht darin, den Click-to-Text-Schaltflächenersteller von Zipwhip zu verwenden.

  • Auf dem Desktop senden sie Ihnen eine echte Textnachricht hinter den Kulissen der Benutzereingaben.
  • Unter iOS oder Android erhalten Sie stattdessen die native Textfunktion.

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

John Lauer
quelle
Schaltfläche ohne Telefonnummer kann nicht erstellt werden.
Michal
-3

Weder Android noch iPhones unterstützen derzeit das Body-Copy-Element in einem Tap to SMS-Hyperlink. Dies kann jedoch programmgesteuert erfolgen.

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
quelle
Ist das Ziel C? Wie nennt man das aus JavaScript oder verwendet es in HTML? Klingt unmöglich?
Sparkyspider
Kann dies bitte als akzeptiert markiert werden? Dies beantwortet die Frage überhaupt nicht. Ich habe tatsächlich etwas gepostet, das funktioniert und die Frage beantwortet.
Brad Orego