AppDelegate.m (Cordova 2.3.0) 中不存在 didFinishLaunchingWithOptions 方法

Posted

技术标签:

【中文标题】AppDelegate.m (Cordova 2.3.0) 中不存在 didFinishLaunchingWithOptions 方法【英文标题】:didFinishLaunchingWithOptions method does not exist in AppDelegate.m (Cordova 2.3.0) 【发布时间】:2014-01-29 19:31:55 【问题描述】:

我们的应用是使用 Cordova/Phonegap 为 ios 构建的,我们正在尝试添加一些第三方库来监控应用性能。因为我们的应用程序还使用 Salesforce Hybrid SDK,我们目前无法升级 Cordova,因此我们的版本停留在 2.3.0。我们看到的所有服务都需要在 AppDelegate.m 中的 didFinishLaunchingWithOptions 方法中加载和初始化它们的 SDK。例如,一个库的快速入门说明如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    // other code for your app
    // ...
    [Crittercism enableWithAppID: @"52e9510d4002056e4300000b"];

我可以毫无问题地包含头文件,但是框架提供的 AppDelegate.m 中不存在该方法。当我尝试将自己的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法添加到 AppDelegate.h 和 AppDelegate.m 时,Phonegap 容器永远不会加载,并且应用程序只是挂起并黑屏。有没有另一种方法可以将此方法添加到我的 AppDelegate,或者使用 Cordova 是否有其他地方可以加载和初始化第三方库(如 crittercism)?将 Cordova 升级到最新版本不是一种选择。作为参考,我目前拥有的完整 AppDelegate.m 实现是:

#import "AppDelegate.h"

@implementation AppDelegate

#pragma mark - App lifecycle

+ (NSString *) startPage

    NSString *superValue = [super startPage];
    return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"test"] ? @"test.html" : superValue;
;

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)w 
    return (NSUInteger)[application supportedInterfaceOrientationsForWindow:w] | (1<<UIInterfaceOrientationPortrait);

// NOTE: be sure to call all super methods you override.

@end

【问题讨论】:

【参考方案1】:

刚刚意识到我覆盖了didFinishLaunchingWithOptions,而没有调用它的原始实现。通过在我的实现中添加 [super application:application didFinishLaunchingWithOptions:launchOptions]; 来修复。

【讨论】:

以上是关于AppDelegate.m (Cordova 2.3.0) 中不存在 didFinishLaunchingWithOptions 方法的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 插件 - 将方法附加到 AppDelegate

PhoneGap / Cordova 将 appdelegate 变量传递给 JS

cordova支持私人HTTPS证书

cordova支持私人HTTPS证书

将 AppDelegate.h 和 AppDelegate.m 替换为 AppDelegate.swift

AppDelegate.m 和 View Controller.m 的区别