我正在考虑整合支持跟踪Facebook的新移动应用广告。
我在这里阅读了教程: https://developers.facebook.com/docs/tutorials/mobile-app-ads/
它说:
当用户首次打开您的应用时,请包含以下代码
[FBSettings publishInstall:appId];
所以第一个问题是 - 如果安装是从Facebook驱动的话,我在哪里放置它以便它只调用调用?我不希望FB在应用程序商店中找到我自己的应用程序的人获得赞誉。
我是否需要手动跟踪我之前是否为此特定用户调用了publishInstall? (序言句意味着这一点 - 但是发布的InstInstall的SDK文档也暗示了这一点。)
更令人困惑的是,SDK FBSettings参考包含shouldAutoPublishInstall
,默认为YES
。这表明除了集成SDK之外我不需要做任何事情。那么教程为什么不提这个呢?
我认为appId是关联的Facebook appId(而不是App Store App ID)。文档中也不清楚这一点。
答案 0 :(得分:7)
我浏览了facebook iOS SDK的来源,似乎指南错了。
您是对的,默认情况下autoPublishInstall
设置为YES
,这意味着我们无需手动调用[FBSettings publishInstall:appId];
。 AppId
确实是facebook app id。
当您调用openActiveSessionWith....
方法时,它会初始化FBSession
最后包含initWithAppID:permissions:defaultAudience:urlSchemeSuffix:tokenCacheStrategy:
[FBSettings autoPublishInstall:self.appID];
+ (void)autoPublishInstall:(NSString *)appID {
if ([FBSettings shouldAutoPublishInstall]) {
dispatch_once(&g_publishInstallOnceToken, ^{
// dispatch_once is great, but not re-entrant. Inside publishInstall we use FBRequest, which will
// cause this function to get invoked a second time. By scheduling the work, we can sidestep the problem.
[[FBSettings class] performSelector:@selector(publishInstall:) withObject:appID afterDelay:FBPublishDelay];
});
}
}
从技术上讲,它应该开箱即可报告安装(如果我没有遗漏的话)。今天我要再玩一点,看看它是否按预期工作,并用结果更新答案。
答案 1 :(得分:6)
只需将其放在-[application:didFinishLaunchingWithOptions]
。
并非所有应用都希望整合Facebook登录信息。他们只想要“移动应用安装广告”功能。对于这类应用,他们应该手动调用+[FBSettings publishInstall:appId]
。另一方面,如果您的应用已经集成了facebook登录,您可以假设FB sdk已发布安装。
答案 2 :(得分:3)
如果我们必须放
[FBSettings publishInstall:appId];
手动
-[application:didFinishLaunchingWithOptions]
我如何识别从Facebook发生的安装?我不希望FB在应用程序商店中找到我自己的应用程序的人获得赞誉。
答案 3 :(得分:2)
将代码放入Appdelegate DidbecomeActive方法
- (void)applicationDidBecomeActive:(UIApplication *)application
希望这有帮助:)