如何用branch.io捕获参数?
我开始在iOS应用程序中使用https://branch.io/ 。
我现在面临的问题是:如何使用其参数捕获传入链接?
遵循此处的文档。
我到了这一点,有这个链接:
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”?
亚历克斯和分支在这里:这是一个很好的问题,我们应该在我们的文档中更清楚一点!
当您生成链接(例如, http: initSessionWithLaunchOptions()
)时,您可以设置所需的任何数据参数,并在initSessionWithLaunchOptions()
调用initSessionWithLaunchOptions()
它们返回(如此处所述 )。 您的回调数据可能如下所示:
{ 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' } }
看到这个问题: 解析URL字符串以获取键值的最佳方法是什么?
您还可以使用第三方框架来处理此问题。 如果您正在使用Cocoapods,请转到此处搜索“查询”。
UPDATE
我认为您需要在应用中设置URL Schemes或Universal Links。
我在这里回答了有关URL Schemes的上一个问题,您可以在此处查看 branch.io关于Universal Links的文档
更新2
在您的示例输出中,您将访问XP
作为此类params[@"XP"]
但根据Alex的其他答案,您将使用params[@"data"][@"XP"]
访问它
Params只是一个字典,因此您可以像访问iOS中的任何其他字典一样访问它。