2016-01-27 11 views
13

Mam dziwne przekierowanie do problemu z aplikacją tylko z naszym systemem logowania w systemie iOS 9.Głębokie łączenie przekierowania do aplikacji działa tylko przy drugiej próbie na iOS 9 i tylko w górę

Mam już niedopuszczalne ładowanie abonamentowe, a schematy adresów URL są poprawnie skonfigurowane w moim pliku plist.

Co się dzieje, jest to:

  • Użytkownik jest doprowadzone do SFSafariViewController aby zalogować się z Facebook/Google
  • Użytkownik wprowadza swoje dane uwierzytelniające (lub nie, jeśli są one już w pamięci podręcznej)
  • Zamiast Po przekierowaniu do naszej aplikacji użytkownik utknął na pustej stronie, jeśli jego poświadczenia są przechowywane w pamięci podręcznej lub utknęły na końcowej stronie logowania google/facebook. Nie pojawia się okno dialogowe "Otwórz w aplikacji", a funkcja openUrl AppDelegate nie jest wywoływana.

Teraz, gdy użytkownik zamyka SFSafariViewController, wraca do naszego App stronę logowania i spróbuj ponownie zalogować 2nd czasu, przekierowanie do aplikacji działa za każdym razem stamtąd i metody OpenURL AppDelegate nazywa siebie czas.

Należy zauważyć, że w systemie iOS9 wcześniej przekierowywaliśmy aplikację poza przeglądarkę Safari, aby ukończyć proces logowania (zamiast korzystania z SFSafariViewController) i wystąpił ten sam problem, natomiast wyskakujące okienko "otwórz w aplikacji" pozwalające na przekierowanie do aplikacji wystarczy być wyświetlane przy drugiej próbie zalogowania i w górę.

Wszystko dzieje się tylko na iOS 9. W systemie iOS 8 ten problem nie pojawia się, a nasi użytkownicy są zawsze przekierowywani do aplikacji po zalogowaniu.

Adres URL przekierowania wysłany do aplikacji po zalogowaniu się OAuth jest taki sam przy pierwszej próbie zalogowania i wznowieniu.

Czy ktoś ma taki problem na iOS 9?

+0

Nie, to wygląda dziwacznie, obecnie rozwijam jedną aplikację. Aktualizacja do ios 9 najpierw nie zadziałała, potem raz dodałem auth w ino.plist, zaczęło działać ... ale z twojego pytania .. wygląda na coś niezręcznego ... że nie działa po raz pierwszy, a potem działa .... –

+0

Czy możesz umieścić swój kod, w którym działasz do uwierzytelniania z elementów społecznościowych –

+0

to dobrze, jeśli umieścisz tutaj swój kod logowania. –

Odpowiedz

3

Jak już wspomniano w odniesieniu Facebooku, więc

  1. Najpierw Chyba brakuje wezwanie FBSDKApplicationDelegate naapplication:openURL:sourceApplication:annotation: z UIApplicationDelegate naapplication:openURL:options:

  2. może brakować tej linii NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; w UIApplicationDelegate'sdidFinishLaunchingWithOptions

  3. Krzyż sprawdzenie, czy zostały wykonane konfigurację jak wspomniano w tym https://developers.facebook.com/docs/ios/ios9

  4. Jeśli urządzenie jest Jailbreak iOS 9.0.2 wówczas będzie to powodować problem schematu URL.

Rozwiązanie że pracował dla mnie jest poniżej linii kodu, jak mam zarówno FB/G + zintegrowany w moim app takie same: -

- (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

Mam doświadczenie z głębokiego linkowania problemy W moim przypadku źródłem problemu jest to, że w informacji podano zestaw CFBundleIdentifier.plist do pustego "" ciągu, usuwając go lub ustawiając nazwę aplikacji, naprawił problemy z routingiem.

Nadzieję, że pomaga.

Powiązane problemy