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

时间:2015-03-05 14:32:56

标签: json facebook deep-linking applinks

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

我可以检索此JSON示例,但我看不到将自定义数据附加到其中的位置。如果这不可行,那么我唯一的解决办法是解析获得的网址,但这似乎没有太大的防范性。

{
    "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"
    }
}

2 个答案:

答案 0 :(得分:2)

解析数据

我的解决方案是为target_url创建自定义数据。

NSDictionary *dictionary = @{ @"target_url" : @"YOUR_VALUE"};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

然后,使用 FB Graph Object 字典中的al_applink_data键附加您的Facebook应用链接ID。

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

那就是它。!!

检索回拨网址

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);
}

网址解析参考:URLParser

感谢。

答案 1 :(得分:0)

" extras" map旨在携带任意元数据。您需要什么类型的自定义数据?通过" extras"传递自定义数据blob要求调用者了解您的应用程序(因此他们实际上可以添加数据)。