web-dev-qa-db-fra.com

Comment pré-renseigner le corps du texte sms via un lien html

Comment utiliser un lien HTML pour ouvrir l'application SMS avec un corps prérempli?

Tout ce que j'ai lu semble indiquer que sms: 18005555555? Body = bodyTextHere

Cela devrait fonctionner, mais sur l'iPhone, cela ne fonctionne pas. Si je sors le? Body = bodyTextHere, et utilise seulement sms: phonenumber, cela fonctionne.

J'ai vu plusieurs cas où les codes QR le font via un lien de safari. Comment peuvent-ils pré-remplir le corps du texte?

86
merlincam

Il s'avère que c'est 100% possible, bien qu'un peu de hacky. 

Si vous voulez que cela fonctionne sur Android, vous devez utiliser ce format:

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

Si vous voulez que cela fonctionne sur iOS, vous avez besoin de ceci:

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

Démo en direct ici: http://bradorego.com/test/sms.html (notez que "Phone and? Body" et "Phone and; body" doivent remplir automatiquement le champ to: ainsi que le corps du texte. Voir la source pour plus d'informations)

METTRE À JOUR:

Apparemment, iOS8 devait changer les choses, alors grâce à d'autres commentateurs/répondeurs, il existe un nouveau style pour iOS:

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

(le numéro de téléphone est facultatif)

152
Bradley Orego

Je sais que c'est un vieux fil, mais je suis tombé dessus et j'ai trouvé que certaines parties ne sont plus pertinentes.

J'ai constaté que si vous souhaitez remplir simplement le texte sans ajouter de numéro de téléphone, vous pouvez procéder comme suit:

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

Pour iOS 8, essayez ceci:

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

Changer le ";" avec un "&" a fonctionné pour moi.

37
landen

Il suffit de mettre tous les symboles dans cet ordre (je ne l’ai testé que dans cet ordre car c’est ce qui a le plus de sens en termes de code). 

Avis pour le lien de corps ... Je viens de mettre ... ;?&body=. En outre, notez que j’ai trouvé que j’avais besoin d’utiliser %20 pour tous les espaces. 

Je l'ai testé sur mon iPhone (version 9.2) et sur un autre Android, et tout fonctionne parfaitement.

Cela résoudra le problème de devoir le pirater pour différents appareils. Je n'ai aucun artefact lorsque je l'ai testé dans le 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>
25
Nathan Sharfi

Nous avons trouvé une méthode proposée et testé:

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

Voici les résultats:

  • iPhone4 - faute (corps de message vide); 
  • Nokia N8 - ok (corps du message - "Bonjour mon ami", To "12345678");
  • HTC Mozart - faute (message "page non prise en charge" (après avoir cliqué sur le lien "Envoyer sms"));
  • HTC Desire - faute (message "Destinataires non valides:
    <12345678? Body = Hellomyfriend> "(après avoir cliqué sur le lien" Envoyer un SMS ")).

Je conclus donc que cela ne fonctionne pas vraiment - avec cette méthode au moins.

10
Ben
<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;
})
4
hkongm

Il n'est pas nécessaire d'avoir deux balises d'ancrage distinctes pour Android et iOS .Cela devrait aider.

// Sans numéro de contact
<a href="sms:?&body=message">Text Message</a>

// avec numéro de contact
<a href="sms:1234567890;?&body=message">Text Message</a>

// Fonctionne sur Android et iOS 

3
aayushdrolia

Pour obtenir des sms: et mailto: des liens fonctionnent sur iPhone et Android, sans javascript, essayez ceci:

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

Je l'ai testé sur Chrome pour Android et iPhone et Safari sur iPhone.
Ils ont tous travaillé comme prévu . Ils ont également travaillé sans numéro de téléphone ni adresse électronique.

3
Debbie V

L'iPhone n'accepte aucun message, il ne prendra que le numéro de téléphone. Vous pouvez le voir ici https://developer.Apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//Apple_ref/doc/uid/TP40007899-CH7-SW1

3
A. Z.

La solution de Bradorego est ce qui a fonctionné pour moi, mais voici une réponse plus complète.

Une petite considération est que vous devez encoder le corps en utilisant %20 au lieu de +. Pour PHP, cela signifie utiliser rawurlencode($body) au lieu de urlencode($body). Sinon, vous verrez des signes plus dans le message sur les anciennes versions d'iOS, au lieu d'espaces.

Voici une fonction jQuery qui réaménagera vos liens SMS pour les appareils iOS. Android/autres appareils devraient fonctionner normalement et n'exécuteront pas le code.

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

Pensez à utiliser une classe telle que a.sms-link au lieu de a[href^="sms:"] si possible.

3
Radley Sustaire

Eh bien, non seulement vous devez vous soucier de iOS et Android, il y a aussi quelle application de messagerie Android. L'application de messagerie Google pour la note 9 et certaines nouvelles galaxys ne s'ouvre pas avec du texte, mais l'application samsung fonctionne. La solution semble être ajouter // après le sms:

donc sms: // 15551235555

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

devrait être

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

Je suppose que dans la plupart des applications, vous ne saurez pas à qui envoyer un message texte. Vous ne souhaitez donc que remplir le corps du texte, pas le nombre. Cela fonctionne comme prévu en omettant simplement le nombre - voici à quoi ressemblent les URL dans ce cas:

sms:?body=message

Pour iOS, même chose sauf avec le;

sms:;body=message

Voici un exemple du code que j'utilise pour configurer le 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;
1
Lemon Kazi

Pour utiliser Android, utilisez le code ci-dessous.

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

Pour iOS, vous pouvez utiliser le code ci-dessous

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

le code ci-dessous fonctionne pour iOs et Android

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

Cela fonctionne sur mon iPhone 5S!

1
Kim

Chaque version de système d'exploitation a une manière différente de le faire. Jetez un oeil à la bibliothèque de sms-link

0
Ghigo

(Juste un peu de sujet), mais peut-être que si vous cherchiez, vous pourriez trébucher ici ... In markdown (testé avec parsedown et sur iOS/Android) vous pourriez faire:

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

J'ai découvert que, sur iPhone 4 avec IOS 7 , vous POUVEZ mettre un corps sur le SMS uniquement si vous définissez un numéro de téléphone dans la liste des contacts du téléphone.

Donc, ce qui suit fonctionnera Si 0606060606 fait partie de mes contacts:

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

À propos, sur iOS 6 (iPhone 3GS), cela fonctionne avec juste un corps:

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

L'un des problèmes avec un lien click-to-text est la résolution du scénario de bureau où aucune application de texto native n'existe. Une solution consiste à utiliser le créateur du bouton Click-to-Text de Zipwhip. 

  • Sur le bureau, ils vous envoient un véritable message texte dans les coulisses à partir de la saisie de l'utilisateur. 
  • Sur iOS ou Android, vous obtenez la fonctionnalité de messagerie texte native à la place.

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

0
John Lauer