Як попередньо заповнити текстовий текст sms за допомогою HTML-посилання


113

Як за допомогою HTML-посилання відкрити додаток sms із попередньо заповненим тілом?

Все, що я прочитав, схоже, вказує на те, що sms: 18005555555? Body = bodyTextHere

Має працювати, але на iPhone це не працює. Якщо я вийму? Body = bodyTextHere, і просто використовую sms: phonenumber, він працює.

Я бачив кілька випадків, коли QR-коди роблять це через посилання сафарі. Як вони можуть заздалегідь заповнити текст тексту?


Цікаво, чи ці QR-сканери відкривають додаток для SMS безпосередньо замість цього…
merlincam

Я не думаю, що це можливо. Дивіться такі: stackoverflow.com/questions/10848/… stackoverflow.com/questions/1517169/…
Джейсон Геннаро

це все-таки правда? Без методу?
tyler

Це на 100% можливо. Дивіться мою відповідь нижче для отримання інформації.
Бред Орего

Відповіді:


178

Виявляється, це на 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 (зверніть увагу на "Телефон і" тіло "та" Телефон і; корпус ", слід автозаповнювати і поле: і текст тексту. Перегляньте джерело для отримання додаткової інформації інформація)

ОНОВЛЕННЯ:

Мабуть, iOS8 повинен був перейти на зміну, тому завдяки деяким іншим коментаторам / респондентам з'явився новий стиль для iOS:

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

(номер телефону необов’язково)


5
Примітка. Я не перевіряв їх на останніх версіях ОС (iOS7 / iPhone 5S / 5C та Android 4.4). Є деякі звіти, які, можливо, більше не працюють, особливо з переходом Android на використання Hangouts замість рідної програми SMS. Я загляну в це, коли матиму можливість.
Бред Орего

3
Я зараз поглянув, бо іноді це працювало, а іноді ні, що здавалося дивним. Мої висновки: Якщо набрати номер, який ви принаймні надіслав один SMS раніше, посилання прекрасно працює з "body". Якщо це зовсім новий номер, вам не пощастить, і ви отримаєте лише номер :(
MMachinegun

7
Велика примітка: додаток, що обробляє smsURI, можна змінити на Android, і багато виробників роблять це; тому, хоча він може працювати на певному пристрої / додатку, він може не працювати на іншому (або просто після оновлення). Моя пропозиція - ніколи не використовувати це на Android, якщо ви не встановите лише номер телефону; використовувати його лише на версіях iOS та не-Android платформах, які ви протестували.
fregante

1
@OrangeDog побачити моя відповідь на IOS 7 stackoverflow.com/questions/6480462 / ...
paaacman

1
жодне з посилань не працює з iOS в iOS 11.1
Toskan

49

Я знаю, що це стара нитка, але натрапила на неї і виявила, що деякі частини вже не актуальні.

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

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

1
Це відповідь, яку я шукав. Дякую за допомогу!
Конрад Г

1
прекрасно працює, але коли закінчиться з OSX, він відкриває текстове повідомлення Кому:, ?будь-яка ідея, як зробити так, щоб він з’явився порожнім? Я спробував sms:?bodyі sms:;?body, перший намагається надіслати? а другий намагається надіслати до;
Джошуа

@JoshuaOhana Що станеться, якщо ви спробуєте "sms:? 0123456789 & body = Моє повідомлення"? На жаль, у вас немає доступу до будь-яких пристроїв Apple.
Алі

Не працює на пристроях Android. Тільки? Body = робить трюк.
Doodlemeat

40

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

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

Перемикання ";" з "&" працював для мене.


3
fwiw Я щойно тестував це на iOS 10, і він все ще працює :).
Роб Доусон

@landen Це прекрасно спрацьовує, якщо програма SMS вже була відкрита у фоновому режимі. Якщо це не так, я просто отримую програму, яку потрібно відкрити на своєму телефоні, без номера телефону або корпусу повідомлення. Якісь ідеї?
DMEM

31

Просто введіть усі символи в цей порядок (я лише тестував його в цьому порядку, оскільки це робить для мене найбільш розумним код).

Зверніть увагу на посилання тіла ... Я просто покласти ... ;?&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>

Лише вилучивши номер і залишивши крапку з комою (sms:; & body = Questi ..) працював над Android 7 родним месенджером, коли я не хотів, щоб число було попередньо заповнене
ibex

2017-11-17: Пробували на Aquaris BQ, Nexus, iPhone 7 та LPhone, і це працює як шарм. Пробував з різними браузерами (Chrome, Firefox, Opera, native). Дуже дякую!
Урош Т.

На Android це залежить від того, який додаток для SMS використовується. Наприклад, на Android 9 із програмою QKSMS це намагається надіслати повідомлення; а тіло не входить. (QKSMS не є додатком за замовчуванням, але ним можуть користуватися люди, які не хочуть, щоб SMS став MMS після досягнення певного розміру.) На жаль, на HTML-сторінці немає можливості визначити, який додаток для SMS бути у користуванні. З цієї причини я буду пропускати SMS-посилання, якщо виявлю Android.
Сілас С. Браун

15

Немає необхідності у двох окремих тегах прив’язок для Android та iOS. Це має допомогти.

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

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

// Працює як на Android, так і на iOS


1
Дякую за це, чудово працює на iOS та Android! Слідкуйте за Without Contact Numberверсією на MacOS - це встановлює SMS toна?
Оллі Khakwani

10

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

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

Ось результати:

  • iPhone4 - несправність (порожнє тіло повідомлення);
  • Nokia N8 - нормально (частина повідомлення - "Привіт мій друг", до "12345678");
  • HTC Mozart - помилка (повідомлення "непідтримувана сторінка" (після натискання на посилання "Надіслати sms"));
  • HTC Desire - помилка (повідомлення "Недійсні адресати:
    <12345678? Body = Hellomyfriend>" (після натискання на посилання "Надіслати sms")).

Тому я прийшов до висновку, що це насправді не працює - принаймні з цим методом.


Для iPhone4 см моя відповідь нижче stackoverflow.com/questions/6480462 / ...
paaacman

8

Тільки для 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.


5

Щоб отримати 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

Рішення Бредорего - це те, що працювало для мене, але ось більш розгорнута відповідь.

Невелике врахування полягає в тому, що вам потрібно кодувати тіло, використовуючи %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
<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;
})

Працює на більшості андроїд і IOS 5 і 6. Не працює на IOS 7.
Девід C

3

IPhone не приймає жодного тексту повідомлення, він буде брати лише номер телефону. Ви можете побачити це тут https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html#//apple_ref/doc/uid/TP40007899-CH7-SW1


1
ця сторінка вже недоступна
Кірк Хамметт

1
Це вже не вірно з iOS8. Ви можете надіслати <a href="sms: evidencephone numberSense&body=body text"> Посилання </a> - амперсанд передує тілу =. Синтаксично заплутано, так, але це працює на мене, і тіло заповнюється потрібним повідомленням.
Грег Джонсон

1
Підтверджено, що iOS 10.2 не підтримує частину "body", як описано у посиланні вище.
Нікодемуз

Здається, це вже не відповідає дійсності згідно stackoverflow.com/questions/39529099/…
morels

3

Для використання Android ви використовуєте код нижче

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

Для iOS ви можете використовувати код нижче

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

нижче код працює як для iO, так і для Android

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

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

Це працює на моєму iPhone 5S!


2

Я підозрюю, що в більшості програм ви не знаєте, хто надсилатиме текст, тому ви хочете лише заповнити текст, а не номер. Це працює так, як ви очікували, просто залишивши номер - ось як виглядають 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;

2

Ну не тільки вам потрібно турбуватися про iOS та Android, є ще і який додаток для обміну повідомленнями для Android. Додаток для обміну повідомленнями Google для Примітки 9 та деяких нових галактик не відкривається текстом, але програма Samsung працює. Здається, рішення додається // після sms:

так sms: // 15551235555

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

має бути

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

Чи знаєте ви, чи працює це для всіх Android або лише певних версій? Це версія, яка працювала на моєму Pixel 2, android 9
JCisar

Я не мав жодних проблем з цим на старих андроїдах, які я протестував.
Ден Паркер

2
Крім того, це не працює, коли ви не надаєте номер телефону (я знаю, це не є частиною оригінального питання, але це може бути корисно знати)
JCisar

1

(Ще трохи теми), але, можливо, якщо ви шукали, ви можете натрапити сюди ... У розмітці (тестована на розборі та на iOS / android) ви можете зробити:

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

0

Я дізнався, що на 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>


-1

Однією з проблем, пов’язаних із посиланням "натискання на текст", є вирішення сценарію настільного комп’ютера, де не існує нативного додатка для текстових повідомлень. Рішенням є використання творця кнопки Zipwhip Click-to-Text.

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

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


Не вдається створити кнопку без номера телефону.
Міхал

-3

Ні Android, ні iPhone не підтримують елемент копіювання тіла у гіперпосиланні "Торкніться 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];

Це мета C? Як ви називаєте це з JavaScript або використовуєте його в HTML? Звучить неможливо?
sparkyspider

Чи можна це відмітити як прийняте? Це зовсім не відповідає на питання. Я фактично розмістив щось, що працює, і відповідає на питання.
Бред Орего
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.