LSApplicationQueriesSchemes и производные данные

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

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"

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

2 ответа

Решение

Вы сделали LSApplicationQueriesSchemes dict, это должен быть массив, вот так, тогда он будет работать:).

<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)
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>
Другие вопросы по тегам