После установки динамическая ссылка на контент в Firebase не возвращается

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

Чтобы проверить это, я следую инструкциям, приведенным в документации Firebase и видео по Firecast здесь примерно на отметка 12 минут 40 секунд. Шаги следующие:

  1. Сначала я удаляю приложение со своего устройства.
  2. Затем нажимаю ссылку, чтобы открыть магазин приложений.
  3. Затем я запускаю свое приложение из xcode.
  4. Ожидается: свойство dynamicLink.url будет равно "https: //www.example.com/data/helloworld" в application: openURL.
  5. Реальность: свойство dynamicLink.url имеет нулевое значение.

Это URL-адрес deeplink, который я создал в консоли Firebase: https://nqze6app.goo.gl/RIl8

Это URL-адрес, который передается в application: openURL перед передачей в dynamicLinkFromCustomSchemeURL: com.johnbogil.voices: // google / link / dismiss? Fdl_cookie

Это код в моем вызове openURL:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options { 
  FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
  if (dynamicLink) { 
    NSLog(@"I am handling a link through the openURL method"); 
    [self handleDynamicLink:dynamicLink]; 
    return YES; 
  } else { 
    return NO; 
  } 
}

Не уверен, почему dynamicLink.url прибывает ноль. Любая помощь приветствуется.


person John    schedule 23.08.2016    source источник
comment
Можете ли вы также поделиться ... 1. Содержание вашего application:openURL звонка? и 2. Полностью развернутая динамическая ссылка? (На панели управления Firebase щелкните Сведения о ссылке в дополнительном меню, и вы должны увидеть это ниже.)   -  person Todd Kerpelman    schedule 24.08.2016
comment
@ToddKerpelman 1) `- (BOOL) application: (UIApplication *) app openURL: (NSURL *) параметры URL: (NSDictionary‹ NSString *, id ›*) параметры {FIRDynamicLink * dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomScheme] ; if (dynamicLink) {NSLog (@ я обрабатываю ссылку с помощью метода openURL); [self handleDynamicLink: dynamicLink]; вернуть ДА; } else {вернуть НЕТ; }} `2) https://nqze6.app.goo.gl/?link=https://www.example.com/data/helloworld&isi=965692648&ibi=com.johnbogil.voices Таргетинг и тестирование для iOS 9.3   -  person John    schedule 24.08.2016
comment
Хорошо. Итак, можете ли вы подтвердить, что видите сообщение "Я обрабатываю ссылку через ссылку метода openURL" в выводе консоли? Также ... есть ли шанс, что у вас есть Safari в приватном режиме?   -  person Todd Kerpelman    schedule 25.08.2016
comment
@ToddKerpelman Я использовал Safari в приватном режиме. Выход из приватного режима решил проблему :)   -  person John    schedule 25.08.2016
comment
Ух! Я пошел дальше и опубликовал это как официальный ответ.   -  person Todd Kerpelman    schedule 26.08.2016


Ответы (5)


Для всех, кто сталкивается с этой же ошибкой ...

  1. Если вызывается ваш application:openURL метод, и
  2. Кажется, вы получаете действительный dynamicLink объект из своего dynamicLinkFromCustomSchemeURL метода, но
  3. Параметр url этого объекта dynamicLink равен нулю

Затем еще раз проверьте, не находитесь ли вы в «частном» режиме Safari. Это как бы испортило способность Firebase Dynamic Links извлекать исходную ссылку, по которой вы щелкнули.

person Todd Kerpelman    schedule 26.08.2016
comment
Я пробовал все, но все еще получаю FIRDynamicLink и ошибку как nil - person Syed Ismail Ahamed; 25.09.2016
comment
Можете ли вы помочь и с этим: stackoverflow.com/q/42093902/6144372 - person Hammad Nasir; 07.02.2017

Я была такая же проблема. Я получал обратный вызов recoveryHandler, но в обратном вызове handleUniversalLink dynamiclink и ошибка оба были равны нулю. Потратив некоторое время, я обнаружил свою проблему.

Оказывается, url чувствителен к регистру. Например, если ваш URL:

https://xzz6b.app.goo.gl/0EWv

и вы написали https://xzz6b.app.goo.gl/0ewv в заметках и щелкнул по нему. Он загрузит ваше приложение и даже даст вам обратный вызов для восстановленияHandler, но динамическая ссылка будет нулем.

Вы можете попробовать это даже в браузере.

Надеюсь, это кому-нибудь поможет.

person Noor Ali Butt    schedule 01.03.2017
comment
Ага. Также дополнительный символ в конце даст тот же эффект, например xzz6b.app.goo.gl/0EWv ' - person Vitalii; 31.08.2018

Я столкнулся с той же проблемой.

Решение:

Из документов

Если динамическая ссылка не найдена при первом запуске вашего приложения (в любой версии iOS), этот метод будет вызываться с нулевым URL-адресом FIRDynamicLink, что указывает на то, что SDK не удалось найти соответствующую ожидающую динамическую ссылку.

Итак, вы должны проверить этот шаг

На вкладке «Информация» проекта Xcode вашего приложения создайте новый тип URL-адреса, который будет использоваться для динамических ссылок. Задайте в поле «Идентификатор» уникальное значение, а в поле «Схема URL-адреса» укажите идентификатор вашего пакета, который является схемой URL-адресов по умолчанию, используемой динамическими ссылками.

person えるまる    schedule 09.03.2020

Попробуйте обновить Firebase / DynamicLinks. У меня была такая же проблема, и я запустил обновление модуля Firebase / DynamicLinks. Теперь модуль Firebase / DynamicLinks имеет версию 6.21.0, а объект DynamicLink имеет правильное значение URL.

person Lana    schedule 08.04.2020

В моем случае это было связано с тем, что я использовал пользовательские домены и пропустил бит в docs (см. пункт 3), в котором явно указано, что вам необходимо указать префиксы URL-адресов динамических ссылок с помощью ключа FirebaseDynamicLinksCustomDomains в вашем Info.plist файле.

person Christian Gossain    schedule 29.07.2021