Facebook AppLink и iOS: не удается получить настраиваемые параметры запроса URL-адреса глубокой ссылки

Я пытаюсь создать реферальную программу с функцией Facebook App Invite. Для этого мне нужно создать динамическую ссылку на приложение для Facebook, чтобы обрабатывать и отправлять пользователю глубокую ссылку, содержащую параметры реферального запроса.

Таким образом, когда я отправляю приглашение приложения, я включаю параметр запроса appinviteuserid в URL-адрес:

            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, и я могу получить данные в порядке, поэтому проблема связана с моей реализацией ссылок на приложения.

спасибо за помощь


person Konrad    schedule 15.03.2016    source источник


Ответы (2)


Измените вызов метода NSDictionary* appLinkData = [parsedUrl appLinkData]; на NSDictionary* appLinkData = [parsedUrl targetQueryParameters]; оттуда, вы можете получить «параметр appinviteuserid». Затем NSString *appInviteUserId = appLinkData[@"appinviteuserid"];

person griffinmacias    schedule 15.03.2016
comment
Эй, спасибо за ваш ответ. Я не пытаюсь получить параметры целевого запроса. Я хочу получить параметры моей глубокой ссылки. Это «invitefbuserid» и «refid». Это параметры для deeplink (поэтому я думаю, что это «входной URL-адрес»), а не для целевого URL-адреса, который имеет параметр appinviteuserid. Я всегда мог бы попытаться поместить два моих параметра в целевой URL-адрес вместо URL-адреса прямой ссылки, но это звучит нелогично и ненужно. - person Konrad; 16.03.2016

После использования новой сборки для тестирования функции приглашения приложения все заработало, как и ожидалось.

person Konrad    schedule 27.03.2016