是否应该在 iOS 上手动调用 FB.ActivateApp

Should FB.ActivateApp be manually called on iOS

我们正在使用最新版本的 Facebook SDK for Unity (v7.2.2)

可用的 API 之一是 ActivateApp (FB.ActivateApp)。

是否应该调用此方法,特别是在 iOS 上?

深入了解引擎盖下的内容(SDK 是开源的),我在 iOS 上(在文件 FBUnityInterface.mm 中)看到了以下代码:

- (void)didBecomeActive:(NSNotification *)notification
{
  [FBSDKAppEvents activateApp];
}

好像是自动调用ActivateApp(不管我手动调用还是不调用)。

我们应该在应用程序启动/恢复时调用 FB.ActivateApp 吗?这不会导致重复的应用程序激活报告吗?

回答我自己的问题:

在 iOS 上,ActivateApp 似乎在 iOS 本机代码中自动调用。

调用 FB.ActivateApp 方法不执行任何操作(请参阅 IOSFacebook.cs 中的代码):

 public override void ActivateApp(string appId)
 {
     IOSFacebook.IOSFBSettingsActivateApp(appId);
 }

调用的方法是空的:

private static void IOSFBSettingsActivateApp(string appId)
{
}

所以,这似乎是在 iOS 上自动处理的。

只是想在这里插话。我们目前有一个错误,在使用 UnityIAP 时,如果用户购买了消耗品 IAP 并在将其标记为完成之前退出应用程序,他们将不会在应用程序重启时收到购买通知。

最后归结为 Facebook 在 iOS (SDK >= 3.22) 中自动记录 IAP 事件。我认为是因为它在 Unity 之前向事务队列添加了一个侦听器。

我提到这个是因为要打开FB的IAP自动记录,你需要设置它:

developers.facebook.com > App > Settings > Basic > iOS > iOS Only: Log In-App Purchase Events Automatically (Recommended)

然后调用ActivateApp()。但是,这是在 iOS 上自动为您完成的,因此只保留网站上的设置或更改代码。

长话短说,如果您使用的是 Unity IAP,并且在 iOS 启动时未收到未完成购买的购买回调,那是因为 FB 或其他插件添加了交易队列侦听器(另一个用户报告了 AdMob 的可能性)。对我们来说是FB。

http://forum.unity3d.com/threads/iap-restorepurchase-on-ios-not-return-processpurchase-callback.392000/