Für eine Anwendung, die ich entwickle, füge ich das Facebook Login SDK hinzu. Ich habe das schon früher für andere Apps getan, aber ich habe ein unerwartetes Verhalten in diesem Bereich. Aus irgendeinem Grund kann beim ersten Start der App nach der Installation durch Drücken der (benutzerdefinierten) Facebook-Anmeldeschaltfläche der Safari-Anmeldebildschirm nicht geöffnet werden. Der Handler des Login-Ereignisses wird nie aufgerufen, so dass ich selbst keinen Fehler anzeigen kann.iOS Facebook Benutzerdefiniertes Login reagiert nicht auf Erstinstallation
Wer hat das schon mal erlebt?
Code: AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
// Some other setup code
return YES;
}
- (BOOL) application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *,id> *)options
{
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:app
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
];
handled |= [GIDSignIn.sharedInstance handleURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
return handled;
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
handled |= [GIDSignIn.sharedInstance handleURL:url sourceApplication:sourceApplication annotation:annotation];
return handled;
}
Individuelle Facebook Authenticator:
-(void)authenticate: (UIViewController *) viewController onCompletion: (void (^)(NSMutableDictionary *bundle, NSError *error))completion {
successBundle = [BundleUtils generateBundle:YES];
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions: permissions
fromViewController:viewController
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
// Never Reached
}];
}
und die relevanten info.plist Teile (wo benutzerdefinierte Variablen sind in den UserDefined Variablen für jede Build-Konfiguration erklärt in verwenden)
<plist version="1.0">
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb${FacebookAppId}</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>${FacebookAppId}</string>
<key>FacebookDisplayName</key>
<string>${FacebookAppName}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
</dict>
</plist>
Wer sieht was ich bin fehlt?