Réponses:
Vous pouvez continuer à utiliser des schémas d'URL lorsque vous créez votre application pour iOS 9 et que vous souhaitez appeler des schémas d'URL, vous devrez maintenant les déclarer dans vos applications Info.plist. Il existe une nouvelle clé, LSApplicationQueriesSchemes , et ici, vous devrez ajouter la liste des schémas sur lesquels vous souhaitez que canOpenURL.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
</array>
Si vous utilisez iOS9, il est important de mettre à jour votre fichier info.plist. Il vous suffit de faire 3 étapes 1. Accédez à info.plist 2. Ajoutez un champ nommé LSApplicationQueriesSchemes NSArray datatype. 3. Ajoutez un élément du type de données NSString, nommez-le fbauth2.
C'est tout. Nettoyez et courez. L'avertissement ne s'affichera plus.
En ce qui concerne la v4.6.0 du SDK FaceBook, ajoutez la clé suivante dans votre fichier plist:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
not
vous dis todo cela, bien que vous l' a fait remarquer!
Suivez simplement l'explication Facebook: Préparation de vos applications pour iOS9
Apple le mentionne dans leur: Confidentialité et votre application Keynote 2015
S'il vous plaît, ne l'ajoutez pas à vos CFBundleURLSchemes ... cela va en fait HIJACK toute tentative d'authentification Facebook par une application, provoquant une fenêtre contextuelle pour afficher la boîte de dialogue "X app veut ouvrir" ...
Vous ne voulez PAS faire cela.
cf:
https://developers.facebook.com/docs/applinks/ios
https://www.fireeye.com/blog/threat-research/2015/04/url_masques_on_apps.html
https://www.reddit.com/r/workflow/comments/2tlx29/get_url_scheme_of_any_app
J'ai eu cela lors de l'exécution de mes tests Kiwi car notre cible de test n'avait pas accès au bundle principal. Donc , je devais ajouter une condition à isRegisteredCanOpenURLScheme
enFBSDKInternalUtility.m
+ (BOOL)isRegisteredCanOpenURLScheme:(NSString *)urlScheme
{
static dispatch_once_t fetchBundleOnce;
static NSArray *schemes = nil;
dispatch_once(&fetchBundleOnce, ^{
schemes = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"LSApplicationQueriesSchemes"];
if (!schemes) { // This is a work around for our Kiwi tests as the Specs target doesn't have access to main bundle
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *path = [bundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:path];
schemes = [dictionary valueForKey:@"LSApplicationQueriesSchemes"];
}
});
return [schemes containsObject:urlScheme];
}
Pour créer votre application pour iOS 9: (Pour Facebook Share)
Info.plist
fichier, ajoutez un autre champ LSApplicationQueriesSchemes sous Information Property List et définissez son type de données Array
ou NSArray
.String
ou NSString
.fbauth2
, fbshareextension
, en fbapi
tant que valeur de l' élément.Suivez cette photo :
Write the below code in your info.plist under the **LSApplicationQueriesScheme**
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbauth</string>
<string>fbauth2</string>
<string>fb-messenger-api20140430</string>
<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>
Vous pouvez essayer avec le code ci-dessous dans swift 5.0
extension Bundle {
static let externalURLSchemes: [String] = {
guard let urlTypes = main.infoDictionary?["LSApplicationQueriesSchemes"]
as? [String] else {
return []
}
return urlTypes
}()
}
Vous pouvez appeler en utilisant Bundle
guard Bundle.externalURLSchemes.contains(URLScheme) else {
return
}