2016-01-27 17 views
13

Ich habe eine seltsame Umleitung auf App-Problem mit unserem Login-System nur in iOS 9.Deep Linking Redirect zu App funktioniert nur auf dem 2. Versuch auf iOS 9 und nur

Jetzt habe ich bereits die erlaubte Payload erlaubt und meine URL-Schemas sind in meiner plist-Datei richtig eingerichtet.

Was ist passiert dies:

  • Ein Benutzer auf einen SFSafariViewController gebracht wird mit facebook einzuloggen/google
  • Der Benutzer seine Daten eingibt (oder auch nicht, wenn sie bereits im Cache gespeichert werden)
  • statt Wenn Sie zu unserer App weitergeleitet werden, bleibt der Nutzer auf einer leeren Seite hängen, wenn seine Zugangsdaten zwischengespeichert werden, oder er bleibt auf der letzten Google/Facebook-Anmeldeseite hängen. Es wird kein Dialogfeld "In App öffnen" angezeigt, und die Funktion openUrl AppDelegate wird nicht aufgerufen.

Nun, wenn der Benutzer die SFSafariViewController schließt, Login-Seite kommt zurück zu unserem in App und versuchen, wieder ein zweites Mal anzumelden, die Umleitung auf die App funktioniert jedes Mal von dort und die Openurl AppDelegate Methode wird jeder aufgerufen Zeit. Beachten Sie, dass wir auf iOS9 zuvor außerhalb der App zu Safari umgeleitet haben, um den Anmeldevorgang abzuschließen (anstatt einen SFSafariViewController zu verwenden) und das gleiche Problem hatte, während das Popup "Öffnen in App" nur zur App umgeleitet wurde beim 2. Login-Versuch angezeigt werden.

Dies alles geschieht nur auf iOS 9. Auf iOS 8 wird dieses Problem nicht angezeigt und unsere Nutzer werden nach dem Anmelden immer zur App weitergeleitet.

Die Weiterleitungs-URL, die nach dem OAuth-Login an die App gesendet wird, ist beim ersten Anmeldeversuch identisch.

Hat jemand solch ein Problem auf iOS 9 bekommen?

+0

Nein, das sieht etwas seltsam aus, ich entwickle gerade eine App .. Upgrade auf iOS 9 zuerst hat es nicht funktioniert, dann, sobald ich auth in ino.plist hinzugefügt, es begann zu arbeiten .. aber von Ihrer Frage .. es sieht etwas peinlich .., dass es nicht funktioniert zum ersten Mal und dann funktioniert es .... –

+0

können Sie Ihren Code, wo Sie für die Authentifizierung von sozialen Artikeln –

+0

läuft es ist gut, wenn Sie Ihren Login-Code hier eingeben. –

Antwort

3

Wie Sie in Bezug auf Facebook erwähnt haben, so

  1. Zuerst raten Sie den Anruf von FBSDKApplicationDelegate die fehlenapplication:openURL:sourceApplication:annotation: von UIApplicationDelegate desapplication:openURL:options:

  2. Sie können diese Zeile fehlt NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; in UIApplicationDelegatedidFinishLaunchingWithOptions

  3. Kreuzprüfung, die Sie das Setup ausgeführt haben, wie in diesem

    https://developers.facebook.com/docs/ios/ios9 erwähnt
  4. Wenn das Gerät Jailbreak dann in iOS es das URL-Schema Ausgabe 9.0.2 verursacht.

Lösung, die für mich gearbeitet ist die im folgenden Codezeilen, wie ich beide FB habe/G + in meinem app gleiche wie Sie integriert: -

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { 
    return [[FBSDKApplicationDelegate sharedInstance] application:app 
                  openURL:url 
               sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
                 annotation:options[UIApplicationOpenURLOptionsAnnotationKey]] 
      || [[GIDSignIn sharedInstance] handleURL:url 
            sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
              annotation:options[UIApplicationOpenURLOptionsSourceApplicationKey]]; 
} 
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 

     return [[FBSDKApplicationDelegate sharedInstance] application:application 
                  openURL:url 
               sourceApplication:sourceApplication 
                 annotation:annotation 
       ] || 
       [[GIDSignIn sharedInstance] handleURL:url 
              sourceApplication:sourceApplication 
               annotation:annotation]; 
    } 
0

Ich habe Erfahrung mit DeepLinking Probleme In meinem Fall ist die Wurzel des Problems, dass wir die CFBundleIdentifier in der Info gesetzt hatten.Klicken Sie auf den leeren String "", indem Sie ihn löschen oder auf Ihren Apps-Namen setzen, um unsere Routing-Probleme zu beheben.

Hoffe, dass hilft.