Facebook AppLink & iOS:无法检索自定义深度 link URL 查询参数
Facebook AppLink & iOS: can't retrieve custom deep link URL query parameters
我正在尝试使用 Facebook 的 App Invite 功能创建推荐计划。这需要我为 Facebook 创建一个动态应用 Link 来处理和向用户发送包含推荐查询参数的深度 link。
当我发送 App Invite 时,我因此在 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];
在我的网站上,我使用 PHP 脚本根据 appinviteuserid 参数填充了 applinks <meta>
标签。所以 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">
然后,点击应用邀请 link 的用户应该深入 link 进入 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
我已经尝试使用 deep link 本身而不通过 Facebook App Links 并且我可以很好地检索数据,所以这个问题与我对 App [=36= 的实现有关]s.
感谢您的帮助
将方法调用 NSDictionary* appLinkData = [parsedUrl appLinkData];
更改为 NSDictionary* appLinkData = [parsedUrl targetQueryParameters];
从那里您可以获得 "appinviteuserid parameter"。
然后 NSString *appInviteUserId = appLinkData[@"appinviteuserid"]
;
在使用新版本测试 App Invite 功能后,一切按预期进行。
我正在尝试使用 Facebook 的 App Invite 功能创建推荐计划。这需要我为 Facebook 创建一个动态应用 Link 来处理和向用户发送包含推荐查询参数的深度 link。
当我发送 App Invite 时,我因此在 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];
在我的网站上,我使用 PHP 脚本根据 appinviteuserid 参数填充了 applinks <meta>
标签。所以 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">
然后,点击应用邀请 link 的用户应该深入 link 进入 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
我已经尝试使用 deep link 本身而不通过 Facebook App Links 并且我可以很好地检索数据,所以这个问题与我对 App [=36= 的实现有关]s.
感谢您的帮助
将方法调用 NSDictionary* appLinkData = [parsedUrl appLinkData];
更改为 NSDictionary* appLinkData = [parsedUrl targetQueryParameters];
从那里您可以获得 "appinviteuserid parameter"。
然后 NSString *appInviteUserId = appLinkData[@"appinviteuserid"]
;
在使用新版本测试 App Invite 功能后,一切按预期进行。