2016-07-15 4 views
1

私のようなアプリでwhatsapp URLを開きたいと思います。LSApplicationQueriesSchemesと派生データ

let whatsAppUrl = NSURL(string: "whatsapp://send?text=Hello%2C%20World!") 
if UIApplication.sharedApplication().canOpenURL(whatsAppUrl!) { 
    UIApplication.sharedApplication().openURL(whatsAppUrl!) 
} 

私のinfo.plistを辞書 "LSApplicationQueriesSchemes"で拡張し、whatsappのURLスキームを追加します。

<key>LSApplicationQueriesSchemes</key> 
<dict> 
    <key>Item 0</key> 
    <string>whatsapp</string> 
</dict> 

私のアプリを実行すると、次のエラーメッセージが表示されます。

派生したデータを消去してこの問題を解決するためのアプリをもう一度実行すると、いくつかの解決策が表示されます。しかし、これは私を助けない、私の問題のための他の解決策が存在する?あなたはLSApplicationQueriesSchemes dictをした

答えて

3

、それはthisのように、それは:)動作する、配列でなければなりません。

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>whatsapp</string> 
</array> 

そして、私はまた、あなたの代わりにこのようにそれを行うことができ、!を使用して、オプションのURLをアンラップしないように、あなたをお勧めします:

guard 
    let whatsAppUrl = URL(string: "whatsapp://send?text=Hello%2C%20World!"), 
    case let application = UIApplication.shared, 
    application.canOpenURL(whatsAppUrl) 
else { return } 
application.openURL(whatsAppUrl) 
+0

多くのありがとうございます。今すぐ新しいエラーメッセージが表示されます。-canOpenURL:URLに失敗しました:「whatsapp:// send?text = Hello%2C%20World!」 - エラー:「(null)」 – smartcoderx

+0

奇妙なことに、配列ではなく、今辞書ですか?多分この答えを試してみてくださいhttp://stackoverflow.com/a/34037713/1311272、疑問符の問題がありますか? – Sajjon

+0

エラーはxcodeにのみ表示され、たくさん – smartcoderx

1
let url = "whatsapp://send?text=Hello World!" 
if let urlString = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) { 
    if let whatsappURL = NSURL(string: urlString) { 
    if UIApplication.sharedApplication().canOpenURL(whatsappURL) { 
     UIApplication.sharedApplication().openURL(whatsappURL) 
     } 
     }} 

とその

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>whatsapp</string> 
</array> 
のようなクエリスキームを定義