2016-01-03 3 views
1

Я пытаюсь запустить страницу Facebook, сначала проверяю, можно ли ее открыть в собственном приложении, а затем открыть в Safari, если нет. У меня установлен Facebook, но он всегда открывает страницу в Safari. Это код, который я использую.Не удалось запустить собственное приложение для Facebook

let fbId = "ID" // this is of course a dummy value now 
let url = "fb://profile/\(fbId)" 
let fbURL = NSURL(string: url) 
if UIApplication.sharedApplication().canOpenURL(fbURL!){ 
     UIApplication.sharedApplication().openURL(fbURL!)    
} 
else { 
    //redirect to safari because the user doesn't have Facebook 
    UIApplication.sharedApplication().openURL(NSURL(string:"http://facebook.com/\(fbId)")!) 
} 

Любые идеи, почему это не работает?

ответ

2

Для прошивки 9, Вы должны белый список URL, что ваше приложение будет взывать к использованию LSApplicationQueriesSchemes ключа в Info.plist. Так добавьте этот код в файл Plist:

<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>fb</string> 
<string>fbapi</string> 
<string>fbauth2</string> 
<string>fbshareextension</string> 
<string>fb-messenger-api</string> 
<string>twitter</string> 
<string>whatsapp</string> 
<string>wechat</string> 
<string>line</string> 
<string>instagram</string> 
<string>kakaotalk</string> 
<string>mqq</string> 
<string>vk</string> 
<string>comgooglemaps</string> 
</array> 

Вы можете удалить схемы вы не хотите использовать слишком.

Надеюсь, что эта помощь!

+0

Спасибо, это сработало! –

0

Если вы создаете для iOS 9.0, вам необходимо обновить свой Info.plist.

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/occ/instm/UIApplication/canOpenURL:

ВАЖНО Если ваше приложение связано с или после прошивкой 9.0, вы должны объявить схемы URL, которые вы хотите, чтобы перейти к этому методу. Сделайте это с помощью массива LSApplicationQueriesSchemes в файле Info.plist проекта Xcode . Для каждой схемы URL, которую вы хотите, чтобы ваше приложение использовало этот метод, добавьте его как строку в этом массиве.

Если ваш (IOS 9.0 или более поздней версии) приложение вызывает этот метод с использованием схемы вы не объявленную, метод возвращает NO, или нет установлен соответствующее приложение для схемы на устройстве.