Facebook Applinks-在al_applink_数据中传递自定义JSON数据

Facebook Applinks-在al_applink_数据中传递自定义JSON数据,json,facebook,deep-linking,applinks,Json,Facebook,Deep Linking,Applinks,是否可以使用Facebook applinks在al_applink_数据中传递自定义数据 我可以检索这个JSON示例,但看不到将自定义数据附加到其中的位置。若这是不可能的,那个么我唯一的解决方案就是解析获得的URL,但这看起来并不是很可靠 { "target_url": "https://www.example.com/abc.html", "extras": { "fb_app_id": [YOUR_FACEBOOK_APP_ID], "fb_

是否可以使用Facebook applinks在al_applink_数据中传递自定义数据

我可以检索这个JSON示例,但看不到将自定义数据附加到其中的位置。若这是不可能的,那个么我唯一的解决方案就是解析获得的URL,但这看起来并不是很可靠

{
    "target_url": "https://www.example.com/abc.html",
    "extras": {
        "fb_app_id": [YOUR_FACEBOOK_APP_ID],
        "fb_access_token": "[ACCESS_TOKEN']",
        "fb_expires_in": "3600"
    },
    "referer_app_link": {
        "url": "[FACEBOOK_APP_BACK_LINK]",
        "app_name": "Facebook"
    }
}

“extras”地图设计用于携带任意元数据。您需要什么类型的自定义数据?通过“extras”blob传递自定义数据需要调用者了解您的应用程序的一些信息(以便他们可以实际添加数据)。

解析数据

我的解决方案是为目标url创建自定义数据

NSDictionary *dictionary = @{ @"target_url" : @"YOUR_VALUE"};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
然后,用你的Facebook应用程序链接ID附加
al\u applink\u数据
输入FB图形对象字典

[NSString stringWithFormat:@"https://fb.me/FB_LINK_ID?al_applink_data=%@", jsonString]
就这样

检索回调URL

if([[call appLinkData] targetURL] != nil)
{
    NSURL *targetUrl = [[call appLinkData] targetURL];

    //Actual URL
    NSString *urlString = [[targetUrl absoluteString] stringByRemovingPercentEncoding];

    URLParser *parser = [[URLParser alloc] initWithURLString:urlString];

    //Fetching value for 'al_applink_data'
    NSString *appLinkData = [parser valueForVariable:@"al_applink_data"];

    NSData *objectData = [appLinkData dataUsingEncoding:NSUTF8StringEncoding];

    //Dictionary with 'target_key' key and its value.
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:nil];
    NSLog(@"%@", json);
}
URL解析的参考:


谢谢。

请注意,如果您要在fb.me url中添加查询参数,您可能应该使用除al_applink_数据之外的任何内容作为键。应为协议保留al_applink_数据。您可以自由地使用任何任意键/值作为查询参数,因此您应该使用对您的应用程序有意义的东西,而不是所有的applink数据。请您在java中发布您的答案@skomos。。我无法理解MS的答案:)