16

我正在考虑集成对跟踪 Facebook 的新移动应用广告的支持。

我在这里阅读了教程: https ://developers.facebook.com/docs/tutorials/mobile-app-ads/

它说:

包括以下在用户首次打开您的应用程序时要执行的代码

[FBSettings publishInstall:appId];

所以第一个问题是 - 我应该把它放在哪里,以便它只在安装是从 Facebook 驱动的情况下调用调用?我不希望 FB 因在应用商店中自己发现我的应用的人而获得荣誉。

我是否需要手动跟踪我之前是否为该特定用户调用了 publishInstall?(序言句暗示了这一点 - 但 publishInstall 的 SDK 文档另有暗示)。

更令人困惑的是 SDK FBSettings 参考包括shouldAutoPublishInstall默认为YES. 这表明除了集成 SDK 之外我不需要做任何事情。那么为什么教程没有提到这个选项呢?

我假设 appId 是关联的 Facebook appId(而不是 App Store App ID)。这在文档中也不清楚。

4

4 回答 4

7

我浏览了 facebook iOS SDK 的来源,似乎该指南是错误的。

你是对的,这autoPublishInstallYES默认设置的,这意味着我们不需要[FBSettings publishInstall:appId];手动调用。AppId确实是 facebook 应用程序 ID。

当您调用方法时,它会使用 最后包含的内容进行openActiveSessionWith....初始化FBSessioninitWithAppID: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];
        });
   }
}

所以从技术上讲,它应该报告开箱即用的安装(如果我没有遗漏什么)。我今天要多玩一点,看看它是否按预期工作,并用结果更新答案。

于 2012-10-23T08:35:18.320 回答
6
  1. 把它放在-[application:didFinishLaunchingWithOptions].

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

于 2012-11-14T08:46:43.090 回答
3

如果我们只需要放

[FBSettings publishInstall:appId];

手动输入

-[application:didFinishLaunchingWithOptions]

我将如何确定从 facebook 发生的安装?我不希望 FB 因在应用商店中自己发现我的应用的人而获得荣誉。

于 2013-01-30T06:10:41.500 回答
2

将代码放在 Appdelegate DidbecomeActive 方法中

- (void)applicationDidBecomeActive:(UIApplication *)application

希望这有帮助:)

于 2013-07-16T10:30:48.203 回答