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

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

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

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

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

Ответ 1

Оказывается, это на 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 (обратите внимание, что "Телефон и" тело "и" Телефон и тело" должны автозаполнять как поле: и тело текст. Просмотр источника для дополнительной информации)

UPDATE:

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

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

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

Ответ 2

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

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

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

Ответ 3

Для iOS 8 попробуйте следующее:

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

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

Ответ 4

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

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

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

Это решит проблему с необходимостью взломать ее для разных устройств. У меня нет артефактов, когда я тестировал его в 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>

Ответ 5

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

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

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

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

Ответ 6

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

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

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

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

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

Ответ 7

Чтобы получить 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:[email protected]?&subject=My subject&body=This is what I want to sent">click to email</a>

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

Ответ 8

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

Ответ 9

Решение Bradorego - это то, что сработало для меня, но вот более расширенный ответ.

Небольшое соображение состоит в том, что вам нужно закодировать тело, используя %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[href^="sms:"] класс, например a.sms-link.

Ответ 11

Ну, вам нужно не только беспокоиться об iOS и Android, но и о том, какое приложение для обмена сообщениями для Android. Приложение обмена сообщениями Google для Note 9 и некоторых новых галактик не открывается с текстом, но приложение Samsung работает. Решением кажется добавить//после смс:

так что смс://15551235555

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

должно быть

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

Ответ 12

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

Это работает на моем iPhone 5S!

Ответ 13

Я подозреваю, что в большинстве приложений вы не знаете, кому писать, поэтому вы хотите заполнить только текст, а не номер. Это работает так, как вы ожидали, просто оставив номер - вот как выглядят URL-адреса в этом случае:

sms:?body=message

Для iOS одно и то же, кроме как:

sms:;body=message

Вот пример кода, который я использую для настройки 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;

Ответ 14

(Немного темы), но, возможно, если бы вы искали, вы могли бы наткнуться здесь... В уценке (протестировано с parsedown и на iOS/android) вы могли бы сделать:

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

Ответ 15

Для использования Android вы используете код ниже

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

Для iOS вы можете использовать код ниже

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

код ниже работает как для iOS, так и для Android

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

Ответ 16

Я узнал, что на iPhone 4 с IOS 7 вы можете поместить тело в SMS только в том случае, если вы установили номер телефона в списке контактов телефона.

Итак, будет работать следующее: 0606060606 является частью моих контактов:

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

Кстати, на iOS 6 (iPhone 3GS) он работает только с телом:

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

Ответ 17

Каждая версия ОС имеет другой способ сделать это. Взгляните на sms-link library

Ответ 18

Одной из проблем с ссылкой "щелчок к тексту" является решение сценария рабочего стола, где нет собственного приложения для текстовых сообщений. Решение состоит в том, чтобы использовать создатель кнопки Zipwhip Click-to-Text.

  • На рабочем столе они отправляют вам реальное текстовое сообщение за кадром из пользовательского ввода.
  • На iOS или Android вы получаете встроенную текстовую функциональность.

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

Ответ 19

Android и iOS только для Android и iOS:

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

Android и iOS только один получатель с телом:

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

Только Android с несколькими получателями с телом:

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

Только для iOS несколько получателей с телом:

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

Обратите внимание, что тело должно быть в кодировке URI.

Ответ 20

Ни Android, ни iPhone в настоящее время не поддерживают элемент копирования тела в гиперссылке Tap to SMS. Это можно сделать программно, но

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

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

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