2015-12-18 14 views
6

Come posso aprire l'app Messaggi sullo schermo di composizione, con il corpo del messaggio precaricato con un testo specifico?Come posso comporre un messaggio a livello di codice?

+0

@RMenke ho controllato se MessageUI era disponibile per watchos (non lo è), e sembrava per eventuali strutture che potrebbero essere l'equivalente, ma è venuto a mani vuote. –

+0

whereSe stai attivando questo da, puoi richiamare l'apertura di questo url: sms: 123-456-8900, ma non penso che tu possa popolare un messaggio! Https: //developer.apple.com/library/watchos/ featuredarticles/iPhoneURLScheme_Reference/SMSLinks/SMSLinks.html – Jatin

+0

@ Jatin 1) Non credo che sia possibile aprire collegamenti su Apple Watch (l'applicazione UIA non sembra essere disponibile). 2) So che è possibile popolare il messaggio, uso baca che ho visto fare. –

risposta

0

Grazie a @ Jatin per trovare la funzione openSystemURL(url: NSURL).

Ecco il codice:

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

sono sicuro che è qualcosa di stupido, ma io non sto ottenendo questo codice funzioni. Quando lo eseguo, mostra questo errore: errore fatale: inaspettatamente trovato nil mentre scartando un valore facoltativo. Come è urlSafeBody nil ?! – Charlie

+1

Non è 'urlSafeBody' che è nullo. Stai forzando l'estrazione di 'NSURL', che risulta essere nullo perché la sua stringa di URL non è corretta. Vedi [la mia risposta] (http://stackoverflow.com/a/36567031/4151918) per i dettagli. –

6

Benjy's answer is almost correct, ma ha un problema.

Poiché urlSafeBody non è da scartare, rese stringa di interpolazione

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

che sta causando NSURL inizializzazione per tornare zero, poiché la stringa URL non valido.

Ecco un esempio funzionante che scartano condizionalmente gli optionals. Questo rimuove qualsiasi possibilità di crash relativi a nil optionals che vengono forzati.

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