我开始在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”?
答案 0 :(得分:6)
亚历克斯与分支在这里:这是一个很好的问题,我们应该在我们的文档中做得更清楚!
当您生成链接(例如,http://myapp.app.link/A1bcDEFgHi)时,您可以设置所需的任何数据参数,并在initSessionWithLaunchOptions()
调用中将其恢复(如文档here所述) 。您的回调数据可能如下所示:
{
tags: [ 'tag1', 'tag2' ],
channel: 'facebook',
feature: 'dashboard',
stage: 'new user',
data: {
mydata: 'something',
foo: 'bar',
}
}
如果您将查询附加到链接网址(例如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'
}
}
答案 1 :(得分:1)
请参阅此问题:Best way to parse URL string to get values for keys?
您还可以使用第三方框架来处理此问题。如果您正在使用Cocoapods,请转到here并搜索"查询"。
<强>更新强>
我认为您需要在应用中设置网址套餐或通用链接。
我之前回答了有关网址方案here的问题,您可以查看有关Universal Links here
的branch.io文档。更新2
在您的示例输出中,您可以XP
访问params[@"XP"]
,但根据Alex的其他答案,您可以使用params[@"data"][@"XP"]
Params只是一个字典,因此您可以像访问iOS中的任何其他字典一样访问它。