Возможно, вы думаете, что это дублированный вопрос, но это не так, я полностью знаю все ответы на SO о canOpenURL
и его оговорках на iOS 9, но вот моя проблема:Это приложение не разрешено запрашивать по схеме XYZ: //
Я пытаюсь проверить, установлено ли на моем устройстве определенное приложение (оба разработанные мной). я объявил схему на AppA
как:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.my.company.id</string>
<key>CFBundleURLSchemes</key>
<array>
<string>XYZ</string>
</array>
</dict>
</array>
и на другое приложение, AppB
я добавил в info.plist:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>XYZ</string>
</array>
Теперь в AppB
я пытаюсь выяснить, если я AppA
установлен так:
internal static let appAScheme = "XYZ://"
static func AppAInstalled() -> Bool {
let appAURL = NSURL(string: appAScheme)
return UIApplication.sharedApplication().canOpenURL(appAURL!)
}
Он всегда возвращает
-canOpenURL: failed for URL: "XYZ://" - error: "This app is not allowed to query for scheme XYZ"
Как всегда, если я попытаюсь открыть AppA
от AppB
, это сработает без проблем!
// Works alright
UIApplication.sharedApplication().openURL(appAURL!)
Я не могу понять, почему!