2015-03-05 2 views
5

можно ли с помощью пользовательских данных Facebook использовать al_applink_data?Facebook Applinks - передавать пользовательские данные JSON в al_applink_data

Я могу получить этот пример 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" 
    } 
} 
+0

Может у вас, пожалуйста, напишите ur answer @skomos в java .. Я не могу понять MS-ответ .. :) –

ответ

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]; 

Затем добавьте с Facebook приложением ссылка ID с al_applink_data ключом в FB Graph Object словаря.

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

Вот и все. !!

Получение URL-адреса CallBack

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 разборе: URLParser

Спасибо.

+0

На педантичной ноте, если вы добавляете параметры запроса к URL-адресу fb.me, вам следует, вероятно, используйте что-нибудь BUT al_applink_data в качестве ключа. al_applink_data следует зарезервировать для протокола. Вы можете использовать любой произвольный ключ/значение для параметра запроса, поэтому вы должны использовать что-то, что имеет смысл для вашего приложения, а не al_applink_data. –

0

Карта "Дополнительные услуги" предназначена для переноса произвольных метаданных. Какой тип пользовательских данных вам нужен? Передача пользовательских данных с помощью «дополнительных» blob требует, чтобы вызывающий пользователь знал что-то о вашем приложении (чтобы они могли фактически добавить данные).

Смежные вопросы