Antworten:
Sie können weiterhin URL-Schemata verwenden, wenn Sie Ihre App für iOS 9 erstellen und URL-Schemata aufrufen möchten. Sie müssen sie jetzt in der Info.plist Ihrer Apps deklarieren. Es gibt einen neuen Schlüssel, LSApplicationQueriesSchemes , und hier müssen Sie die Liste der Schemata hinzufügen, für die canOpenURL verwendet werden soll.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
</array>
Wenn Sie iOS9 verwenden, ist dies wichtig, um Ihre info.plist-Datei zu aktualisieren. Sie müssen nur 3 Schritte ausführen. 1. Gehen Sie zu info.plist. 2. Fügen Sie ein Feld hinzu, nämlich LSApplicationQueriesSchemes NSArray-Datentyp LSApplicationQueriesSchemes. 3. Fügen Sie ein Element des NSString-Datentyps mit dem Namen fbauth2 hinzu.
Das ist es. Einfach putzen und rennen. Warnung wird nicht wieder angezeigt.
Fügen Sie in Version 4.6.0 des FaceBook SDK den folgenden Schlüssel zu Ihrer Plist-Datei hinzu:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
not
Sie sagen , das todo, gut , dass Sie darauf hingewiesen!
Folgen
Sie einfach der Facebook-Erklärung: Vorbereiten Ihrer Apps für iOS9 Apple erwähnt dies in den folgenden Abschnitten : Datenschutz und Ihre App Keynote 2015
Bitte füge dies einfach nicht zu deinen CFBundleURLSchemes hinzu ... das wird tatsächlich den Versuch einer App zur Facebook-Authentifizierung HIJACKEN, was dazu führt, dass in einem Popup das Dialogfeld "X-App möchte öffnen" angezeigt wird ...
Das willst du NICHT tun.
Vgl.:
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
Ich habe dies beim Ausführen meiner Kiwi-Tests erhalten, da unser Testziel keinen Zugriff auf das Hauptpaket hatte. So hatte ich eine Bedingung hinzuzufügen , isRegisteredCanOpenURLScheme
inFBSDKInternalUtility.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];
}
So erstellen Sie Ihre App für iOS 9: (Für Facebook Share)
Info.plist
Datei, fügen Sie unter Information Property List ein weiteres Feld LSApplicationQueriesSchemes hinzu und legen Sie den Datentyp Array
oder festNSArray
.String
oderNSString
.fbauth2
, fbshareextension
, fbapi
als Elementwert.Folgen Sie diesem Foto :
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>
Sie können es mit dem folgenden Code versuchen swift 5.0
extension Bundle {
static let externalURLSchemes: [String] = {
guard let urlTypes = main.infoDictionary?["LSApplicationQueriesSchemes"]
as? [String] else {
return []
}
return urlTypes
}()
}
Sie können mit anrufen Bundle
guard Bundle.externalURLSchemes.contains(URLScheme) else {
return
}