2016-09-26 2 views
0

Я использовал Branch.io для создания deeplink для своего приложения. Но он перенаправляет меня на контроллер глубоких ссылок каждый раз, когда приложение запускается.Branch.io Deeplink открывает глубокую ссылку при каждом запуске приложения

Я использовал следующий код в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

Branch *branch = [Branch getInstance]; 

HomeDetailsViewController *controller = (HomeDetailsViewController*)[[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"HomeDetailsViewControllerID"]; 

[branch registerDeepLinkController:controller forKey:@"bucketId"]; 
[branch initSessionWithLaunchOptions:launchOptions automaticallyDisplayDeepLinkController:YES]; 

..

// Respond to Universal Links - Branch io 
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler { 
    BOOL handledByBranch = [[Branch getInstance] continueUserActivity:userActivity]; 

    return handledByBranch; 
} 

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options NS_AVAILABLE_IOS(9_0) { 

    [[Branch getInstance] handleDeepLink:url]; 

    [self application:app 
     processOpenURLAction:url 
      sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
        annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
        iosVersion:9]; 

    return YES; 
} 



-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    [[Branch getInstance] handleDeepLink:url]; 

    [self application:application 
     processOpenURLAction:url 
      sourceApplication:sourceApplication 
        annotation:annotation 
        iosVersion:8]; 

    return YES; 
} 

ответ

0

Вы не должны вызывать instantiateViewController... из

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

По их docs, вы должны использовать следующий код:

Branch *branch = [Branch getInstance]; 
[branch initSessionWithLaunchOptions:launchOptions andRegisterDeepLinkHandler:^(NSDictionary *params, NSError *error) { 
    if (!error && params) { 
     // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app 
     // params will be empty if no data found 
     // ... insert custom logic here ... 
     NSLog(@"params: %@", params.description); 
    } 
}]; 
+0

Да, я также реализовал этот код, но он также возвращал да для параметра 'clicked_branch_link', даже когда ссылка не была нажата. Я думаю, что это сохраняет ценность где-то по своему предпочтению. Но когда я тестировал его на тестовом полете, он работал нормально. –

+0

Alex from Branch.io здесь: если вы много тестировали, возможно, у вас было несколько ссылок на клики для этого идентификатора устройства, и SDK просто нужно было очистить их последовательно. Если у вас по-прежнему возникают проблемы, дайте мне знать! –

+0

У меня такая же проблема, как я могу ее очистить? @AlexBauer – ovidiur