我的用于phonegap app的iOS插件曾经工作过一次。当应用程序再次启动时,它才会起作用,直到我进入后台并返回应用程序

时间:2014-01-13 14:22:32

标签: ios iphone plugins cordova

我有使用PhoneGap 2.8.1制作的iPhone应用程序,我最近遇到了一个奇怪的问题: 我编写了一些插件,用于在设备上存储一些应用程序机密,散列给定数据(使用这些机密)并将此哈希值返回给JS。

当我在安装后第一次运行我的应用程序时,一切正常。 但是,当我再次启动它时,应用程序会在我的插件方法开始之前(或者可能)开始冻结。 第三方插件在开始之前加载好,但是当涉及到我的插件时 - 什么也没发生。

在Xcode控制台上没有任何内容,在weinre控制台上没有任何内容。空值。没有错误异常,没有来自本机代码的日志。 当我尝试从weinre console手动运行一些本机方法时,也没有任何反应。

但是当我按下主页按钮并返回到我的应用程序背景时,一切都神奇地开始工作!

有没有人有类似的问题?有解决方案吗线索?

1 个答案:

答案 0 :(得分:0)

我有散列数据的方法,这些数据将在请求中发送到我的API。我这样用它:

window.plugins.protocol.hamac data, (results) =>
    # work with results

本机代码如下所示:

- (void)hamac:(CDVInvokedUrlCommand*)command {
    NSLog(@"HAMAC STARTED!");
    CDVPluginResult* pluginResult = nil;

    @try {
        NSDictionary* data = [command.arguments objectAtIndex:0];

        if (data != nil) {
            // prepare string to be hashed

            pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary: @{
                                                                                                        @"status": @YES,
                                                                                                        @"h": [self sha1:[NSString stringWithFormat:@"%@", stringToHash]
                                                                                                        }];
        } else {
            pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary: @{
                                                                                                           @"status": @NO,
                                                                                                           @"error": @"No data!"
                                                                                                           }];
        }
    } @catch (NSException* e) {
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary: @{
                                                                                                       @"status": @NO,
                                                                                                       @"error": @"Failed to hash data"
                                                                                                       }];
    }

    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}