我在iOS应用中添加了Facebook分析。我从客户端添加了一些事件,但后者我们认为我们也可以从服务器端添加一些事件。要从服务器端发送Facebook分析事件,后端团队需要custom_audience_third_party_id。
根据FB- custom_audience_third_party_id:此ID是Facebook用户ID和调用Facebook应用程序ID的加密编码。 具有相同用户的多个呼叫将返回不同的ID,因此这些ID不能用于关联行为 跨设备或应用程序,只有在发送回Facebook以创建自定义受众时才有意义。
检索到的ID表示以下列方式识别的Facebook用户:如果指定的访问令牌有效,
ID将代表与该令牌关联的用户;否则该ID将代表登录的用户
设备上的原生Facebook应用程序。如果没有本机Facebook应用程序,则没有人登录,或者用户已选择退出
在广告跟踪的iOS级别,将返回nil
ID。
如果用户从广告跟踪中选择退出(通过iOS),此方法会返回nil
,该应用本身的活动使用受限
通过[FBSDKSettings limitEventAndDataUsage]
标志,或无法识别特定的Facebook用户。
获取" custom_audience_third_party_id" :我发送一个请求事件。
FBSDKGraphRequest *request = [FBSDKAppEvents requestForCustomAudienceThirdPartyIDWithAccessToken:[FBSDKAccessToken currentAccessToken]];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (error) {
NSLog(@"ERROR in FB %@",[error description]);
} else {
NSLog(@"result is %@", result);
NSLog(@"custom_audience_third_party_id ==%@", [result valueForKey:@"custom_audience_third_party_id"]);
}
}];
但[result valueForKey:@"custom_audience_third_party_id"]
总是来nil
。
我阅读了FB文档,但仍然无法确切知道问题(为什么[result valueForKey:@"custom_audience_third_party_id"]
总是nil
。)
答案 0 :(得分:0)
这可能是SDK Bug或/和它们的终点(graph-api)生成third_party_id的错误。在android中就是这种情况。我们尝试使用4.0.1而没有任何成功。升级到4.2.0无需进行任何其他更改即可运行。
答案 1 :(得分:0)
我能够通过在发送请求之前添加一个短暂的延迟来修复我的应用中的此问题,即使使用nil
访问令牌......
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
FBSDKGraphRequest *request = [FBSDKAppEvents requestForCustomAudienceThirdPartyIDWithAccessToken:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, NSDictionary *result, NSError *error) {
NSString *thirdPartyId = result[@"custom_audience_third_party_id"];
if(thirdPartyId != nil){
// Do what you must with the ID
}
}];
});