После открытия iOS-приложения метод continue userActivity: не вызывается - динамическая ссылка Firebase - PullRequest
0 голосов
/ 09 апреля 2019

Я успешно интегрировал динамические ссылки Firebase, и когда я нажимаю на динамическую ссылку, открывается моё приложение.

Проблемы, с которыми я сталкиваюсь при открытии приложения из динамических ссылок, должен вызываться метод continue userActivity:, но ничего не происходит.

Я проверил все возможные вещи, но не распознал проблему.

Я искал SO для этого, но ни один из ответов мне не помог.

Мой код:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

  GIDSignIn.sharedInstance().clientID = kGoogleSignInClientId
  FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

 // DynamicLinks.performDiagnostics(completion: nil)

  FirebaseApp.configure()

  return true
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

  if url.absoluteString.contains(kFBAppId) {

    return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)

  }

  if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
    print(dynamicLink.url ?? URL(string: "test") as Any)
    return true
  }

    return GIDSignIn.sharedInstance().handle(url, sourceApplication: options[.sourceApplication] as? String, annotation: options[.annotation])

}

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

  //This method is not getting called
}

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Ошибка Google.

Я не знаю, хранят ли они свой документ. в курсе или нет.

Я только что скопировал код из официального документа Google по динамической ссылке Firebase.

Почему метод continue userActivity: не вызывается?

Причина (см. Разницу в следующем методе)

Копия вставлена ​​из Google Doc. - Неправильно

func application (_ application: UIApplication, продолжить userActivity: NSUserActivity, restoreHandler: @escaping ([ UIUserActivityRestoring ]?) -> Void) -> Bool {

}

Я написал это (без копирования вставить из Google Doc.) - исправить

func application (_ application: UIApplication, continue userActivity: NSUserActivity, restoreHandler: @escaping ([ Any ]?) -> Void) -> Bool {

}

Я выделил жирным шрифтом разницу.

Это то, что я пытался много часов. Мне действительно очень неприятно слепо доверять Google Doc. :-|

Надеюсь, это поможет другим.

1 голос
/ 09 апреля 2019

Для обработки универсальной ссылки в приложении сначала необходимо добавить в приложение файл разрешений с поддерживаемыми URL-адресами.

Для этого откройте Xcode, выберите свой проект, перейдите в раздел Возможности и найдите раздел «Связанный домен».

enter image description here

Включите эту возможность и добавьте запись для каждого домена, поддерживаемого вашим приложением, с префиксом ссылок приложений:

Теперь вам нужно реализовать приложение (_: continue: restorationHandler :) в вашем файле AppDelegate. Этот метод вызывается, когда пользователь нажимает на ссылку, которую вы поддерживаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...