2015-12-18 8 views
6

Wie kann ich die App "Nachrichten" auf dem Bildschirm "Verfassen" öffnen, wobei der Nachrichtentext mit einem bestimmten Text vorinstalliert ist?Wie kann ich eine Nachricht programmatisch verfassen?

+0

@RMenke Ich habe überprüft, ob MessageUI für watchOS verfügbar war (ist es nicht), und suchte nach Frameworks, die das Äquivalent sein könnten, aber leer ausgegangen. –

+0

wo immer Sie dies auslösen, können Sie das Öffnen dieser URL aufrufen: sms: 123-456-8900, aber ich glaube nicht, dass Sie eine Nachricht ausfüllen können! Https: //developer.apple.com/library/watchos/ featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html – Jatin

+0

@Jatin 1) Ich glaube nicht, dass Sie Links auf Apple Watch öffnen können (UIApplication scheint nicht verfügbar zu sein). 2) Ich weiß, dass es möglich ist, die Nachricht zu bevölkern, baca benutze ich habe es gesehen. –

Antwort

0

Dank @Jatin zum Finden der openSystemURL(url: NSURL) Funktion.

Hier ist der Code:

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

ich bin sicher, dass es etwas dumm ist, aber ich bin nicht dieser Code immer zu arbeiten. Wenn ich es ausführe, zeigt es diesen Fehler an: Schwerwiegender Fehler: unerwartet fand Null beim Auspacken eines optionalen Wertes. Wie ist urlSafeBody nil ?! – Charlie

+1

Es ist nicht "UrlSafeBody", das ist Null. Sie erzwingen das Auspacken von 'NSURL', das zufällig null ist, weil seine URL-Zeichenfolge falsch formatiert ist. Einzelheiten finden Sie unter [meine Antwort] (http://stackoverflow.com/a/36567031/4151918). –

6

Benjy's answer is almost correct, hat aber ein Problem.

Da urlSafeBody nicht ausgepackt, string Interpolation Ausbeuten

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

die NSURL Initialisierung verursacht Null zurück, da die URL-Zeichenfolge ungültig ist.

Hier ist ein Arbeitsbeispiel, das die Optionals bedingt auspackt. Dies beseitigt die Möglichkeit von Abstürzen im Zusammenhang mit dem Auspacken von Nulle-Optionals.

let messageBody = "Hello World!" 
let urlSafeBody = messageBody.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet()) 
if let urlSafeBody = urlSafeBody, url = NSURL(string: "sms:&body=\(urlSafeBody)") { 
    WKExtension.sharedExtension().openSystemURL(url) 
}