Динамическое связывание Firebase - Continueuseractivity не возвращает URL динамической ссылки

Мое требование - обрабатывать универсальные ссылки в приложении iOS. Но динамический link.url, похоже, возвращает ошибку, как показано ниже -

"@"error" : @"unauthorized user: username=social-app-invite methodName=/FirebaseLookupService.LookupAppsSummary protocol=loas securityLevel=integritY"

Когда я нажимаю динамическую ссылку (https: //****.app.goo.gl/****) из приложения заметок, мое приложение ios будет направлено на следующий обратный вызов -> В этой функции у меня есть следующий код -

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
{
NSURL *incomingURL = userActivity.webpageURL;
if(incomingURL){
    BOOL handled = [[FIRDynamicLinks dynamicLinks]
                    handleUniversalLink:incomingURL
                    completion:^(FIRDynamicLink * _Nullable dynamicLink,
                                 NSError * _Nullable error) {
                        if (dynamicLink.url){`
                           **HANDLE THE DYNAMIC LINK HERE**
                        }else{
                           **CODE IS RETURNING ERROR** NSLog(@"error %@",error);
                        }
                    }];
    return handled;
}else{
    return false;
}

}

Я правильно выполнил документацию по firebase. Пожалуйста, подскажите, что здесь не так?


person Kavitha Pai    schedule 23.09.2016    source источник


Ответы (3)


Я тоже столкнулся с этой проблемой. handleUniversalLink() всегда возвращает false. В моем случае параметр ссылки содержал не только URL-адрес, но и параметры. Таким образом, в последней динамической ссылке есть два вопросительных знака.

https://app-id.app.goo.gl/?link=https://www.domain.com/resource?someParam=someValue&ibi=com.domain.appname

Если я экранирую внутренний URL-адрес (параметр ссылки) с помощью процентного перехода, он работает нормально.

https://app-id.app.goo.gl/?link=https%3A%2F%2Fwww.domain.com%2Fresource%3FsomeParam%3DsomeValue&ibi=com.domain.appname

person cybergen    schedule 09.12.2016
comment
Я пытаюсь получить динамическую ссылку, но handleuniversallink () всегда возвращает false и также не входит в закрытие. - person Rahul Phate; 18.02.2020

Попробуй это.

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
{
    NSURL *url = userActivity.webpageURL;


    FIRDynamicLinks *links = [FIRDynamicLinks dynamicLinks];
    if([links matchesShortLinkFormat:url])
    {
        [links resolveShortLink:url completion:^(NSURL * _Nullable url, NSError * _Nullable error)
        {
                NSString *message =
                [NSString stringWithFormat:@"Deep link  \n:%@",
                 url];

                [[[UIAlertView alloc] initWithTitle:@"Deep-link Data"
                                            message:message
                                           delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil] show];



        }];

        return YES;
    }
 return false;
}
person Aklesh Rathaur    schedule 26.09.2016
comment
Я пробовал это, получаю myappid: // google / link /, а не длинную динамическую ссылку, по любой причине, по которой он не возвращает URL-адрес динамической ссылки. Спасибо - person Syed Ismail Ahamed; 26.09.2016
comment
Вы можете получить длинную динамическую ссылку в URL-адресе блока, который я сформировал в строке сообщения. - person Aklesh Rathaur; 26.09.2016
comment
Я могу получить свою длинную динамическую ссылку в разделе блоков. - person Aklesh Rathaur; 27.09.2016
comment
Попробуйте ввести тот же код, что и мой ответ, без каких-либо изменений. - person Aklesh Rathaur; 27.09.2016
comment
Спасибо за ваш вклад, Аклеш. Но я получаю null для url. Вместо этого получите ошибку NSError. - person Kavitha Pai; 28.09.2016
comment
Домен ошибки = com.google.GTLJSONRPCErrorDomain Code = 403 (неавторизованный пользователь: имя пользователя = social-app-invive methodName = / FirebaseLookupService.LookupAppsSummary protocol = loas securityLevel = целостность) UserInfo = {error = неавторизованный пользователь: username = social-app-seek methodName = / FirebaseLookupService.LookupAppsSummary protocol = loas securityLevel = целостность, GTLStructuredError = GSDK_GTLErrorObject 0x1642e6f0: {code: 403 status?: PERMISSION_DENIED сообщение: unauthorized protocolSettings = username: -пользователь-имя-пользователя-приложение-приложение -Lovel / username: -пользователь-приложение ошибки?: [1]} - person Kavitha Pai; 28.09.2016
comment
@KavithaPai Я попытался найти вашу ошибку и пришел к выводу, что что-то не так с вашей конфигурацией на консоли firebase. Вы используете те же учетные данные, что и на консоли firebase? - person Aklesh Rathaur; 28.09.2016
comment
@AkleshRathaur, Вы имеете в виду googleservice-info.plist? - person Kavitha Pai; 28.09.2016
comment
Где мне нужно использовать те же учетные данные? - person Kavitha Pai; 28.09.2016
comment
@KavithaPai Не могли бы вы прислать мне свою длинную динамическую ссылку с сортировкой? - person Aklesh Rathaur; 28.09.2016
comment
@AkleshRathaur: Это длинная динамическая ссылка - ›https://brej5.app.goo.gl/?link=http://erosnow.com/tv&isi=551666302&ibi=com.erosnow.erosnow&ius=erosnowapp://tv, а короткий -› brej5.app.goo.gl/M4Bi - person Kavitha Pai; 28.09.2016
comment
@KavithaPai проверьте свой идентификатор, идентификатор команды, схему URL-адресов в xcode, а также в консоли firebase. должно быть какое-то несоответствие. - person Aklesh Rathaur; 28.09.2016
comment
@AkleshRathaur: Я не добавлял ничего вручную, кроме схемы URI. Я загрузил googleservice-info.plist с сайта firebase, и все остальные конфигурации являются его частью. - person Kavitha Pai; 28.09.2016
comment
@KavithaPai Я предлагаю вам посмотреть видео на YouTube для приглашения firebase и глубокой ссылки. Вы обязательно получите свое решение. - person Aklesh Rathaur; 28.09.2016
comment
хорошо, я сделаю это .. Но в моем случае приглашение на firebase не требуется. Просто интересно, почему я получаю сообщение об ошибке. - person Kavitha Pai; 28.09.2016
comment
@AkleshRathaur: Думаю, я кое-что нашел. Когда я пытаюсь перейти по URL-адресу динамической ссылки отсюда - developers.google.com/apis-explorer/?hl=en_US#p/. Получаю такой ответ - - person Kavitha Pai; 28.09.2016
comment
код: 403, сообщение: Firebase Dynamic Links API ранее не использовался в проекте google.com:apisexplorerconsole или отключен. Включите его, посетив консоль. developers.google.com/apis/api/, затем повторите попытку. Если вы недавно включили этот API, подождите несколько минут, пока действие распространится на наши системы, и повторите попытку., Status: PERMISSION_DENIED, - person Kavitha Pai; 28.09.2016
comment
@KavithaPai вы сейчас включили? - person Aklesh Rathaur; 28.09.2016
comment
@AkleshRathaur: Да, я включил API динамического связывания. Похоже, для активации потребуется некоторое количество часов. В настоящее время выдает ту же ошибку. - person Kavitha Pai; 28.09.2016
comment
@KavithaPai Хорошо. Попробуй позже. - person Aklesh Rathaur; 28.09.2016
comment
Где вы создали этот проект? на консоли Google или консоли Firebase - person Aklesh Rathaur; 28.09.2016
comment
Я создал проект на самой консоли firebase. Просто нужно было добавить api динамического связывания firbase из ссылки здесь - console.developers.google.com/apis/api/ - person Kavitha Pai; 28.09.2016
comment
Ok. теперь вы получите свое решение. - person Aklesh Rathaur; 28.09.2016
comment
Я проверю через несколько часов и опубликую на этом форуме, работает ли это. - person Kavitha Pai; 28.09.2016
comment
Это было бы полезно другим. - person Aklesh Rathaur; 28.09.2016
comment
@AkleshRathaur: Проверьте мой ответ выше. Мне удалось получить URL-адрес. Но теперь моя проблема в том, что мне нужно значение схемы uri для перехода на соответствующую страницу. Что-то вроде myapp: // какая-то ссылка. В настоящее время я получаю только URL-адрес глубинной ссылки. Он всегда переходит на домашнюю страницу. Не могли бы вы помочь? - person Kavitha Pai; 05.10.2016

Мне удалось получить значение URL-адреса динамической ссылки. В моем коде была дополнительная проверка, как показано ниже -

if (launchOptions != nil) {
[FIROptions defaultOptions].deepLinkURLScheme = URL_SCHEME;

}

Из-за этой проверки схема URL никогда не инициализировалась и, следовательно, давала ошибку.

Код, который я разместил выше, должен возвращать правильный URL-адрес динамической ссылки.

Спасибо.

person Kavitha Pai    schedule 05.10.2016
comment
Спасибо за сообщение. Но этот уже доступен в демо-версии DeepLink Firebase, и я интегрировал его. Может быть, нет, поэтому вы столкнулись с ошибкой. - person Aklesh Rathaur; 05.10.2016