2016-07-15 25 views
1

Я хотел бы открыть URL-адрес whatsapp в моем приложении.LSApplicationQueriesSchemes и производные данные

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

Я выражаю info.plist со словарем "LSApplicationQueriesSchemes" и добавить мою схему URL-адрес для WhatsApp.

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

Если я запустил приложение, я получаю следующее сообщение об ошибке.

"This app is not allowed to query for scheme whatsapp" 

Я прочитал некоторые решения с очисткой полученных данных и снова запустил приложение, чтобы исправить эту проблему. Но это не помогает мне, существует другое решение для моей проблемы?

ответ

3

Вы сделали LSApplicationQueriesSchemes dict, он должен быть массивом, как 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: failed for URL:" whatsapp: // send? text = Hello% 2C% 20World! "- error:" (null) " – smartcoderx

+0

hmm странно, вы уверены, что используете массив, а не словарь сейчас? Возможно, попробуйте этот ответ http://stackoverflow.com/a/34037713/1311272, могут быть проблемы с вопросительным знаком? – Sajjon

+0

ошибка появляется только в xcode, на моем iphone все прекрасно :) спасибо много – 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>