我应该把电话放到[FBSettings publishInstall:appId]

时间:2012-10-18 12:57:14

标签: ios facebook sdk

我正在考虑整合支持跟踪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)。文档中也不清楚这一点。

4 个答案:

答案 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)

  1. 只需将其放在-[application:didFinishLaunchingWithOptions]

  2. 并非所有应用都希望整合Facebook登录信息。他们只想要“移动应用安装广告”功能。对于这类应用,他们应该手动调用+[FBSettings publishInstall:appId]。另一方面,如果您的应用已经集成了facebook登录,您可以假设FB sdk已发布安装。

答案 2 :(得分:3)

如果我们必须放

[FBSettings publishInstall:appId];

手动

-[application:didFinishLaunchingWithOptions]

我如何识别从Facebook发生的安装?我不希望FB在应用程序商店中找到我自己的应用程序的人获得赞誉。

答案 3 :(得分:2)

将代码放入Appdelegate DidbecomeActive方法

- (void)applicationDidBecomeActive:(UIApplication *)application

希望这有帮助:)