Я внес изменения для интеграции с Firebase, используя ссылку https://firebase.google.com/docs/dynamic-links/ios Ниже приведена обработка, выполняемая для обработки URL-адреса и перехода пользователя к соответствующему экрану. для версии iOS ниже 9.0 вызывается метод appdelegate openURL, и я могу получить URL-адрес. Но для iOS версии 9.0 и выше я получаю вызов в методе ContinueUserActivity делегата приложения, и в этом я получаю нулевое значение dynamicLink.url.
Я не могу понять, почему я не могу получить URL-адрес.
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler {
NSLog(@"Short URl : %@",userActivity.webpageURL);
__weak AppDelegate *weakSelf = self;
BOOL handled = [[FIRDynamicLinks dynamicLinks]
handleUniversalLink:userActivity.webpageURL
completion:^(FIRDynamicLink * _Nullable dynamicLink,
NSError * _Nullable error) {
AppDelegate *strongSelf = weakSelf;
[strongSelf handleReceivedLink:dynamicLink];
}];
return handled;
}
-(void)handleReceivedLink:(FIRDynamicLink*)dynamicLink{
NSString* urlString = [NSString stringWithFormat:@"%@",dynamicLink.url];
NSLog(@"Extended URL : %@",urlString);
}
https://domain.com/card?title=[sometitle]
; если я передам в заголовок более одного слова, например, Blue Card, и закодирую его, он станетhttps://domain.com/card?title=Blue%20Card
. Проблема в том, что handleUniversalLink просто не обработает URL и не выдаст ошибку; если я вручную заменил %20 на %2520, это сработает. Подводя итог, проверьте, передаете ли вы какие-либо параметры с пробелом. Опять же, это не решение, а просто то, что я нашел, поскольку это может помочь вам отладить вашу проблему. - person HeavenlyManBR   schedule 11.11.2016