2016-03-15 89 views
0

我正尝试使用Facebook的应用邀请功能创建推介计划。这需要我为Facebook创建一个动态应用链接来处理并向用户发送包含引用查询参数的深层链接。Facebook AppLink和iOS:无法检索自定义深层链接网址查询参数

当我送一个App邀请,因此,我在URL中包括一个appinviteuserid查询参数:

  FBSDKAppInviteContent *content =[[FBSDKAppInviteContent alloc] init]; 
      NSString* urlString = [NSString stringWithFormat:@"http://eduquest.fr/?appinviteuserid=%@", userId]; 
      content.appLinkURL = [NSURL URLWithString:urlString]; 
      [FBSDKAppInviteDialog showFromViewController:self.viewController withContent:content delegate:self]; 

在我的网站,我有applinks <meta>标记,根据该appinviteuserid参数填充,使用PHP脚本。因此,URL http://eduquest.fr/?appinviteuserid=134给出:

<meta property="og:url" content="http://eduquest.fr?appinviteuserid=134"> 
<meta property="og:type" content="website"> 
<meta property="og:image" content="http://eduquest.fr/img/logo01.png"> 
<meta property="fb:app_id" content="1569329799983803"> 
<meta property="al:ios:url" content="eduquestbac://invite?fbinviteuserid=134&refid=0"> 
<meta property="al:ios:app_store_id" content="984500808"> 
<meta property="al:ios:app_name" content="EduQuest Bac 2016"> 
<meta property="al:web:should_fallback" content="false"> 
<meta property="al:web:url" content="http://eduquest.fr"> 

然后,在应用程序用户点击邀请链接应该深链接到App Store或到应用程序。通常情况下,我应该找到以下输入URL:eduquestbac:// invite?fbinviteuserid = 134 & refid = 0

但是,我得到的URL没有我的查询参数。

- (BOOL)application:(UIApplication *)application 
     openURL:(NSURL *)url 

sourceApplication:(的NSString *)sourceApplication 注释:(ID)注释{

// App Links FB 

BFURL *parsedUrl = [BFURL URLWithInboundURL:url sourceApplication:sourceApplication]; 

if ([parsedUrl appLinkData]) { 
    NSDictionary* appLinkData = [parsedUrl appLinkData]; 
    if (appLinkData) 
    { 
     NSString *facebookReferrerUserId = parsedUrl.inputQueryParameters[@"fbinviteuserid"]; 
     NSString* referralId = parsedUrl.inputQueryParameters[@"refid"]; 
// Both these are NSNull 

我已经使用深层链接本身尝试没有经历的Facebook应用程序链接,我可以检索数据精,所以这个问题与我的App Links实现有关。

谢谢您的帮助

回答

0

使用新版本测试应用程序邀请功能后,事情按预期工作。

1

更改方法调用NSDictionary* appLinkData = [parsedUrl appLinkData];NSDictionary* appLinkData = [parsedUrl targetQueryParameters];从那里你可以得到“appinviteuserid参数”。 Then NSString *appInviteUserId = appLinkData[@"appinviteuserid"];

+0

嘿,谢谢你的回答。 我不想获取目标查询参数。我期待得到我的deeplink的参数。这些是'invitefbuserid'和'refid'。它们是深层链接的参数(所以我认为是'输入URL'),而不是用于具有appinviteuserid参数的目标URL。 我总是可以尝试将我的两个参数放入目标URL而不是深层链接URL,但这听起来违反直觉且不必要。 – Konrad