2015-12-18 4 views
6

Как открыть приложение «Сообщения» на экране компоновки, причем тело сообщения предварительно загружено конкретным текстом?Как я могу программно составить сообщение?

+0

@RMenke Я проверил, был ли MessageUI доступен для watchOS (это не так), и искал любые фреймворки, которые могут быть эквивалентными, но при этом пустые. –

+0

Если вы вызываете это, вы можете открыть этот URL-адрес: смс: 123-456-8900, но я не думаю, что вы можете заполнить сообщение! Https: //developer.apple.com/library/watchos/ featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html – Jatin

+0

@Jatin 1) Я не верю, что вы можете открывать ссылки на Apple Watch (UIApplication, похоже, недоступен). 2) Я знаю, что можно заполнить сообщение, использование baca, которое я видел. –

ответ

0

@Jatin для нахождения функции openSystemURL(url: NSURL).

Вот код:

let messageBody = "Hello World!" 
let urlSafeBody = messageBody.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())! 
WKExtension.sharedExtension().openSystemURL(NSURL(string: "sms:&body=\(urlSafeBody)")!) 
+0

Я уверен, что это что-то тупое, но я не получаю этот код работать. Когда я его выполню, он показывает эту ошибку: фатальная ошибка: неожиданно найденный nil при развертывании необязательного значения. Как выглядит urlSafeBody? – Charlie

+1

Это не 'urlSafeBody', которое равно нулю. Вы принудительно распаковываете «NSURL», который, оказывается, равен нулю, потому что его строка URL неверна. См. [Мой ответ] (http://stackoverflow.com/a/36567031/4151918). –

6

Benjy's answer is almost correct, но есть один вопрос.

Поскольку urlSafeBody не развернула, строка интерполяции урожайности

sms:&body=Optional("Hello%20World!")

, которая вызывает NSURL инициализации для возврата ноль, так как строка URL-адрес имеет неверный формат.

Вот рабочий пример, который условно разворачивает дополнительные опции. Это устраняет любую возможность сбоев, связанных с отсутствием дополнительных опций, которые могут быть отключены.