2016-09-26 9 views
6

nil değeri vererek, https://firebase.google.com/docs/dynamic-links/ios bağlantısını kullanarak firebase entegrasyonu için değişiklikleri yaptıktan sonra URL'yi işlemek için yapılan işlem ve kullanıcıyı ilgili ekrana yönlendir. iOS sürümü için 9.0'ın altında, appdelegate'ın openURL yöntemi çağrılır ve URL'yi alabiliyorum. Ancak iOS sürüm 9.0 ve üstü için, app temsilcisinin ContinueUserActivity yönteminde çağrı alıyorum ve ben de dynamicLink.url değerine sahip olduğumu anlıyorum.iOS sürüm 9.0 ve üstü için Firebase Dinamik Bağlantısı, FIRDynamicLink nesnesi nesnesini kullanarak URL alamıyor.

Url'yi alamamın nedenini anlayamıyorum.

- (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); 
} 
+0

Aynı sorunu yaşıyorum. Özel parametremde% 20 karaktere sahip olmak için daraltmayı başardım. Bazı garip nedenlerden dolayı,% 2520 ile değiştirirsem iyi çalışır. Bence bu bir böcek. – HeavenlyManBR

+0

HeavenlyManBR evet bir böcek. Hangi parametreyi değiştiriyorsunuz? Lütfen çözümü hazırlayabilir misiniz? –

+0

Örneğin, bağlantıda özel bir parametre yapıyorum '' 'https://domain.com/card?title= [sometitle]' ''; başlığa bir kelime daha eklerseniz, örneğin, "Mavi Kart" ve kodlayın, "https: //domain.com/card? title = Mavi% 20Card" olacaktır. Sorun şu ki, "handleUniversalLink" sadece url ile ilgilenmeyecek ve bir hata vermeyecektir; elle% 20 w% 2520'yi değiştirirsem çalışır. Özetle, herhangi bir parametreyi boş bir alana geçirip geçirmediğinizi kontrol edin. Yine, bu bir çözüm değil, sadece bulduğum şeyi paylaşarak probleminizi ayıklamanıza yardımcı olabilir. – HeavenlyManBR

cevap

0

Aynı sorunu yaşadım. restorationHandler geri aranıyordu ama handleUniversalLink geri arama dynamiclink ve hata her ikisi de sıfırdı. Bir süre geçirdikten sonra sorunu buldum. Benim derin bağlantı nesnem iki kelime arasında boşluk içeriyordu.

Örnek için

: Benim url böyleydi: https://domainname.com/card?title=Blue%20Card. İlk başta sunucu tarafında URLEncoded değildi. Bu yüzden, Firebase Dynamic Link nesnesine geçmeden önce URLEncoded yaptım. Ve iOS kodunda i değişikliklere aşağıda yapmak zorunda:

NSString *linkURL = [NSString stringWithFormat:@"%@",dynamicLink.url]; 
linkURL = [linkURL stringByRemovingPercentEncoding]; 

Şimdi benim dynamicLink nil değildir ve benim linkURL dize bana derin bağlantı nesnesini verir.

İlgili konular