Как предварительно заполнить текст сообщения смс через HTML ссылку - PullRequest
97 голосов
/ 26 июня 2011

Как использовать ссылку html, чтобы открыть приложение sms с предварительно заполненным телом?

Все, что я прочитал, указывает на то, что смс: 18005555555? Body = bodyTextHere

Должно работать, но на iPhone это не работает. Если я возьму? Body = bodyTextHere и просто использую sms: phonenumber, это сработает.

Я видел несколько случаев, когда QR-коды делали это по ссылке сафари. Как они могут предварительно заполнить основной текст?

Ответы [ 19 ]

159 голосов
/ 02 октября 2013

Оказывается, это возможно на 100%, хотя и немного хакерски.

Если вы хотите, чтобы он работал на Android, вам нужно использовать этот формат:

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

Если вы хотите, чтобы он работал на iOS, вам нужно это:

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

Демонстрация в режиме реального времени здесь: http://bradorego.com/test/sms.html (обратите внимание, что "Телефон и? Тело" и "Телефон и; тело" должны автоматически заполнять поле to: и текст сообщения. Для получения дополнительной информации см. Источник)

UPDATE:

Очевидно, iOS8 пришлось пойти и изменить что-то на нас, поэтому благодаря некоторым другим комментаторам / респондентам появился новый стиль для iOS:

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

(номер телефона необязательный)

44 голосов
/ 26 января 2016

Я знаю, что это старая ветка, но наткнулся на нее и обнаружил, что некоторые части больше не актуальны.

Я обнаружил, что если вы хотите просто заполнить текст без добавления номера телефона, вы можете сделать следующее:

sms:?&body=/* message body here */
39 голосов
/ 27 сентября 2014

Для iOS 8 попробуйте это:

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

Переключение ";" с "&" работал для меня.

30 голосов
/ 02 августа 2016

Просто поместите все символы в этом порядке (я проверял их только в этом порядке, так как для меня это наиболее разумно с точки зрения кода).

Обратите внимание на ссылку на тело ... Я просто поставил ... ;?&body=.Кроме того, обратите внимание, что я обнаружил, что мне нужно использовать %20 для любых пробелов.

Я проверил его на своем iphone (v. 9.2) и другом андроиде, и он прекрасно работает.

Это решит проблему с необходимостью взломать его для других устройств.У меня нет никаких артефактов при тестировании в СМС.

<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>
10 голосов
/ 30 октября 2012

Найден предложенный метод и проверено:

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

Вот результаты:

  • iPhone4 - ошибка (пустое тело сообщения);
  • Nokia N8 - нормально (основная часть сообщения - «Здравствуйте, мой друг», To "12345678");
  • HTC Mozart - ошибка (сообщение «неподдерживаемая страница» (после нажатия на Ссылка "Отправить смс"));
  • HTC Desire - ошибка (сообщение «Недопустимые получатели):
    <12345678? Body = Hellomyfriend> "(после нажатия на ссылку« Отправить смс »)).

Поэтому я пришел к выводу, что на самом деле это не работает - по крайней мере, с этим методом.

8 голосов
/ 17 мая 2018

Нет необходимости в двух отдельных тегах привязки для Android и iOS. Это должно помочь.

// Без контактного номера
<a href="sms:?&body=message">Text Message</a>

// С контактным номером
<a href="sms:1234567890;?&body=message">Text Message</a>

// Работает как на Android, так и на iOS

5 голосов
/ 24 августа 2017

Чтобы получить ссылки sms: и mailto: для работы на iPhone и Android, без использования javascript, попробуйте следующее:

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

Я проверил его на Chrome для Android и iPhone и Safari на iPhone.
Они все работали, как и ожидалось.Они работали без номера телефона или адреса электронной почты.

4 голосов
/ 12 февраля 2015

Решение Брадорего работает для меня, но вот более расширенный ответ.

Небольшое соображение заключается в том, что вам нужно кодировать тело, используя %20 вместо +. Для PHP это означает использование rawurlencode($body) вместо urlencode($body). В противном случае вы увидите знаки плюса в старых версиях iOS вместо пробелов.

Вот функция jQuery, которая обновит ваши SMS-ссылки для устройств iOS. Android / другие устройства должны работать нормально и не будут выполнять код.

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

Если возможно, рассмотрите возможность использования класса, подобного a.sms-link вместо a[href^="sms:"].

4 голосов
/ 23 декабря 2013
<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;
})
3 голосов
/ 26 июня 2011

iPhone не принимает текст сообщения, он принимает только номер телефона.Вы можете увидеть это здесь https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...