如何捕捉branch.io的参数?

How to catch the parameters with branch.io?

我开始在 iOS 应用程序中使用 https://branch.io/

我现在面临的问题是:如何捕捉传入的link及其参数?

遵循文档 here

我到了这个地步,有了这个 link:

http://myapp.app.link/A1bcDEFgHi?XP=315.0,419.0

我的代码是:

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    Branch *branch = [Branch getInstance];
    [branch initSessionWithLaunchOptions:launchOptions 
              andRegisterDeepLinkHandler:^(NSDictionary *params, NSError *error) {
        if (!error && params) {
            NSLog(@"Here is params: %@",params.description); // I need to replace this, with code to get XP!
        }
    }];

    return YES;
}    


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

    return handledByBranch;
}

这是我在调试控制台中得到的:

2016-06-10 11:59:44.407 TheApp[1786:591391] Here is params: {
    "$identity_id" = 2712491317999770034;
    "$one_time_use" = 0;
    "+click_timestamp" = 1465529273;
    "+clicked_branch_link" = 1;
    "+is_first_session" = 0;
    "+match_guaranteed" = 1;
    XP = "315.0,419.0";
    "~creation_source" = "iOS SDK";
    "~id" = 211224109823923327;
}

现在的问题是,(在应用程序内部)使用什么代码来获取数据块:“315.0,419.0”?

看到这个问题:Best way to parse URL string to get values for keys?

您还可以使用第三方框架来处理此问题。如果您使用的是 Cocoapods,请转到 here 并搜索 "Query"。


更新

我认为您需要在您的应用中设置 URL 方案或通用链接。

我已经回答了之前关于 URL 计划的问题 and you can checkout branch.io's documentation on Universal Links here


更新 2

在您的示例输出中,您将访问 XP params[@"XP"],但根据 Alex 的其他答案,您将使用 params[@"data"][@"XP"][=17= 访问它]

Params 只是一个字典,因此您可以像访问 iOS 中的任何其他字典一样访问它。

Alex 和 Branch 在这里:这是一个很好的问题,我们应该在我们的文档中更清楚地说明这个问题!

当您生成 link(例如,http://myapp.app.link/A1bcDEFgHi), you can set whatever data parameters you want and you'll get them back in your initSessionWithLaunchOptions() call (as documented here)时。您的回调数据可能如下所示:

{
    tags: [ 'tag1', 'tag2' ],
    channel: 'facebook',
    feature: 'dashboard',
    stage: 'new user',
    data: {
        mydata: 'something',
        foo: 'bar',
    }
}

如果您将查询附加到 link URL(例如,http://myapp.app.link/A1bcDEFgHi?XP=315.0,419.0),我们只会捕获该参数并将其传递给您:

{
    tags: [ 'tag1', 'tag2' ],
    channel: 'facebook',
    feature: 'dashboard',
    stage: 'new user',
    data: {
        mydata: 'something',
        foo: 'bar',
        XP: '315.0,419.0'
    }
}