applicationDidBecomeActive没有在Cordova app中解雇

时间:2016-06-03 14:25:40

标签: objective-c cordova facebook-sdk-4.0

我正在尝试将Facebook SDK添加到我的Cordova应用程序以跟踪安装。在Facebook App Ads Setup中,他们要求您添加

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [FBSDKAppEvents activateApp];
}

我将这段代码添加到我的AppDelegate.m并包含一个NSLog,它永远不会被调用。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我找到了这个问题的解决方案,或者至少是为什么某些系统响应者可能无法在Cordova项目中启动的原因:

如果您使用扩展AppDelegate的插件来访问生命周期响应者in iOS,您可能不知道,其他一些组件也会扩展AppDelegate并且已经在使用此响应程序,这使得响应者在您的实现中无法访问。

在我的情况下: 我正在制作一个代表模糊屏幕以隐藏敏感的个人数据,然后再制作快照并将应用程序发送到后台,我需要添加一些代码

- (void)applicationWillResignActive:(UIApplication *)application{}
- (void)applicationDidBecomeActive:(UIApplication *)application{}
- (void)applicationDidEnterBackground:(UIApplication *)application{}
- (void)applicationWillEnterForeground:(UIApplication *)application{}

我虽然没有得到DidBecomeActive的任何回复,即使我只是想尝试NSLog。我在项目中搜索了DidBecomeActive密钥,看来FirebasePlugin已经在使用这个方法用于其他一些东西了(这个插件被另一个人添加到项目中,所以我不知道它是如何工作的)。 我所做的只是将我的代码移动到Firebase插件并实现了缺失的响应者,因为我只有大约10行。

答案 1 :(得分:0)

当app从Background转换为Foreground时,会调用

applicationDidBecomeActive 方法。当用户接到电话,短信等或按下主页按钮时,应用程序进入后台(以节省电池等);在通话结束或多任务处理后,应用程序再次激活。然后调用 applicationDidBecomeActive 方法。它应该主要用于刷新tableviews等。

以下是相同方法的Apple文档。

  

调用此方法可让您的应用知道它已从中移动   不活动状态。这可能是因为您的应用程序已启动   由用户或系统。如果,应用程序也可以返回活动状态   用户选择忽略中断(例如来电   暂时将应用程序发送到非活动状态的通话或短信   状态。

     

您应该使用此方法重新启动暂停的任务(或   应用程序处于非活动状态时尚未启动。例如,你可以   用它来重新启动计时器或限制OpenGL ES帧速率。如果你的   应用程序以前在后台,您也可以使用它来刷新   你应用的用户界面。

正在发生的事情完全正常,Facebook广告应该正常运作。

请参阅以下文档以深入了解iOS应用程序生命周期和应用程序代理方法。

The App Life Cycle

UIApplicationDelegate