【问题标题】:How to catch the parameters with branch.io?如何使用 branch.io 捕获参数?
【发布时间】:2016-10-09 16:45:42
【问题描述】:

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

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

按照文档here

我到了这一点,有这个链接:

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”?

【问题讨论】:

    标签: ios deep-linking branch.io


    【解决方案1】:

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

    当你生成一个链接(例如,http://myapp.app.link/A1bcDEFgHi)时,你可以设置你想要的任何数据参数,你会在你的initSessionWithLaunchOptions()调用中取回它们(如here所记录的那样)。您的回调数据可能如下所示:

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

    如果您将查询附加到链接 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'
        }
    }
    

    【讨论】:

    • 感谢您的提示,帮助我走上正轨。我现在看到 application:continueUserActivity:restorationHandler: 方法在这个过程中非常重要。虽然我向前迈出了一大步,但我还有更多的路要走。为此,我编辑了问题,如果您有时间,请看一下。
    【解决方案2】:

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

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


    更新

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

    我已经回答了之前关于 URL Schemes here 的问题,您可以查看 branch.io 在 Universal Links here 上的文档


    更新 2

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

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

    【讨论】:

    • 是的,我已经这样做了。但是如何从应用程序内部捕获链接是我遇到的麻烦。
    • @Michel - 你似乎得到了 Alex 的帮助。我更新了我的答案,提供了一些关于您应该如何访问您的价值的信息。
    • 而不是 params[@"data"][@"XP"] 它是 [params objectForKey:@"XP"] 有效。无论如何,这是个主意,谢谢。我希望文档有时更明确:)
    • 我想接受这个答案。但这是一个艰难的。亚历克斯给了我最大的帮助,但你击中了最后一个钉子:)。亚历克斯的回答 + 你的更新 2 = 完美。
    猜你喜欢
    • 2018-10-23
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多