Подтвердить что ты не робот

Глубокое перенаправление ссылок на приложение работает только во 2-й попытке на iOS 9 и только до

У меня есть странная переадресация на проблему с нашей системой входа в iOS 9.

Теперь у меня уже есть допустимая полезная нагрузка, и мои схемы url правильно настроены в моем файле plist.

Что происходит:

  • Пользователь подключается к SFSafariViewController для входа в facebook/google
  • Пользователь вводит свои учетные данные (или нет, если они уже кэшированы)
  • Вместо того, чтобы перенаправляться на наше приложение, пользователь затем застревает на пустой странице, если его учетные данные кэшируются или застряли на последней странице входа в google/facebook. Диалоговое окно "open in app" не появляется, и функция openUrl AppDelegate не вызывается.

Теперь, если пользователь закрывает SFSafariViewController, возвращается на нашу страницу входа в приложение и снова пытается войти в систему во второй раз, перенаправление на приложение работает каждый раз оттуда, и каждый раз вызывается метод OpenUrl AppDelegate.

Обратите внимание, что на iOS9 мы ранее перенаправляли приложение за пределы приложения Safari для завершения процесса входа (вместо использования SFSafariViewController) и имели такую ​​же проблему, тогда как всплывающее окно "open in App" для перенаправления на приложение было бы показанном во второй попытке входа в систему и вверх.

Это все происходит только на iOS 9. В iOS 8 эта проблема не появляется, и наши пользователи всегда перенаправляются в приложение после входа в систему.

URL-адрес перенаправления, отправленный в приложение после входа в систему OAuth, совпадает с первой попыткой входа в систему и вверх.

Кто-нибудь получил такую ​​проблему на iOS 9?

4b9b3361

Ответ 1

Как вы уже упоминали в Facebook, так

  • Во-первых, предположим, что вам не хватает вызова FBSDKApplicationDelegate application:openURL:sourceApplication:annotation: из UIApplicationDelegate application:openURL:options:

  • Возможно, вам не хватает этой строки NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; в UIApplicationDelegate didFinishLaunchingWithOptions

  • Перекрестно проверьте, что вы следовали настройке, как указано в этом https://developers.facebook.com/docs/ios/ios9

  • Если устройство является Jailbreak, то в iOS 9.0.2 это вызовет проблему с кодом URL.

Решение, которое сработало для меня, - это следующие строки кода, так как у меня есть как FB/G +, интегрированные в моем приложении, так и ваши: -

- (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];
   }

Ответ 2

У меня возникли проблемы с глубокими связями. В моем случае корень проблемы заключается в том, что мы установили CFBundleIdentifier в info.plist в пустую строку "", удалив ее или установив ее в имя приложения, которое оно исправлено наши проблемы с маршрутизации.

Надеюсь, что это поможет.