153 votes

Comment pré-remplir le corps du texte d'un 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 j'enlève le ?body=bodyTextHere, et que j'utilise simplement sms:phonenumber, ça marche.

J'ai vu plusieurs cas où les codes QR font cela via un lien Safari. Comment parviennent-ils à pré-remplir le corps du texte ?

0 votes

Je me demande si ces scanners QR n'ouvrent pas directement l'application SMS à la place...

0 votes

Je ne pense pas que ce soit possible. Regardez ça : stackoverflow.com/questions/10848/ stackoverflow.com/questions/1517169/

0 votes

C'est toujours vrai ? Pas de méthode ?

4voto

RadGH Points 1124

La solution de Bradorego est celle qui a fonctionné pour moi, mais voici une réponse plus étendue.

Une petite considération est que vous devez coder 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 va réajuster vos liens SMS pour les appareils iOS. Les appareils Android/autres 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;');
  });
})();

Envisagez d'utiliser une classe comme a.sms-link au lieu de a[href^="sms:"] si possible.

3voto

ameir Points 162

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

1 votes

Cette page n'est plus accessible

1 votes

Ce n'est plus le cas avec iOS8. Vous pouvez envoyer <a href="sms :[numéro de téléphone]&body=body text">Link</a> - l'esperluette précède le body=. Syntaxiquement déroutant, oui, mais cela fonctionne pour moi et le body se remplit avec le message souhaité.

1 votes

Confirmé que iOS 10.2 ne supporte pas une partie "corps" comme décrit dans le lien ci-dessus.

2voto

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

Cela fonctionne sur mon iPhone 5S !

2voto

Lemon Kazi Points 18

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

sms:?body=message

Pour iOS même chose mais 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;

2voto

Dan Parker Points 31

Non seulement vous devez vous préoccuper d'iOS et d'Android, mais aussi de l'application de messagerie Android. L'application de messagerie Google pour le Note 9 et certains nouveaux galaxys ne s'ouvrent pas avec du texte, mais l'application Samsung fonctionne. La solution semble être d'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>

0 votes

Savez-vous si cela fonctionne pour tous les Android ou seulement certaines versions ? C'est la version qui a fonctionné pour mon Pixel 2, Android 9.

0 votes

Je n'ai eu aucun problème avec cela sur les androïdes plus anciens que j'ai testés également.

2 votes

En outre, il ne semble pas fonctionner lorsque vous ne fournissez pas de numéro de téléphone (je sais que cela ne fait pas partie de la question initiale, mais il pourrait être utile de le savoir).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X