ios - Facebook AppLink和iOS:无法检索自定义深层链接URL查询参数

原文 标签 ios objective-c facebook facebook-graph-api applinks

我正在尝试使用Facebook的App Invite功能创建推荐程序。这要求我为Facebook创建一个动态的App Link,以处理并向用户发送包含引荐查询参数的深层链接。

因此,当我发送“应用邀请”时,我会在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>标记,这些标记使用PHP脚本根据appinviteuserid参数进行填充。因此,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,并且可以很好地检索数据,因此问题与我对App Links的实现有关。

谢谢您的帮助

最佳答案

从那里将方法调用NSDictionary* appLinkData = [parsedUrl appLinkData];更改为NSDictionary* appLinkData = [parsedUrl targetQueryParameters];,您可以获取“ appinviteuserid参数”。
然后NSString *appInviteUserId = appLinkData[@"appinviteuserid"];

关于ios - Facebook AppLink和iOS:无法检索自定义深层链接URL查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36012630/

相关文章:

ios - 错误域= NSCocoaErrorDomain代码= 3840在iOS swift 吗?

iphone - 在iOS下,有没有一种快速的方法来查看特定UUID的符号?

ios - RCTLinking>问题>指针缺少可为空类型说明符(_Nonnull,_Nullable或_Null_unspecified)

ios - 线程 1 :EXC_BAD_ACCESS (code=1, 地址=0x14)

ios - 无法识别Facebook App邀请“FBSDKAppInviteContent”

java - 使用Fql并尝试使用JSON解析结果

ios - 如何避免 Swift UIViewControllers 中的 optional 检查?

iphone - 如何使用iPhone相机测量房间中可见的蓝光强度?

ios - 在 iOS 中添加指向 nsattributedstrings 的链接的越界错误

ruby-on-rails - 使用 Rails 获取 Web 应用程序页面的 FB Likes 总数