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>