如何获取应用程序版本并构建iOS PhoneGap应用程序?

and*_*orp 14 xcode ios xcode4 phonegap-plugins cordova

在设置PhoneGap项目时,您会看到以下内容:

建立

如何在iOS应用程序中获取该信息?有没有办法用phonegap做到这一点?插件怎么样?如果没有插件,并且有一种方法可以在iOS应用程序中执行,则可以编写插件.我只是找不到任何答案.

谢谢!

CWS*_*ear 22

我想提供我的解决方案(基于Adam Ware的解决方案).

通常情况下,我不喜欢只给人们复制和粘贴的所有代码,但我觉得这有点例外,因为许多潜入PhoneGap的人对Objective-C及其看起来很滑稽的语法一无所知(像我这样的).

所以这就是我使用代码并遵循Adam指出的指南:

在我的项目插件文件夹中<project name>/Plugins/,我创建了MyCDVPlugin.mMyCDVPlugin.h.

我之前用C语言写过,所以我理解标题,但是对于那些没有标题的人来说,它基本上是告诉编码器要查找的内容,所以我们只告诉它我们方法的名称并导入Cordova的标题:

#import <Cordova/CDVPlugin.h>

@interface MyCDVPlugin : CDVPlugin

- (void)getVersionNumber:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;

@end
Run Code Online (Sandbox Code Playgroud)

这些参数是标准的Cordova插件参数(据我所知).作为一个吸气剂,我们的功能在某种意义上实际上没有任何参数,但仍然需要这些参数.(options可能实际上是可选的?我没有测试过.)

在我们中.m,我们需要的只是实际的函数,我们之前的标题,以及CDVPluginResult.h:

#import "MyCDVPlugin.h"
#import <Cordova/CDVPluginResult.h>

@implementation MyCDVPlugin

- (void)getVersionNumber:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
    NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    NSString* callbackId = [arguments objectAtIndex:0];

    CDVPluginResult* pluginResult = nil;
    NSString* javaScript = nil;

    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:version];
    javaScript = [pluginResult toSuccessCallbackString:callbackId];

    [self writeJavascript:javaScript];
}

@end
Run Code Online (Sandbox Code Playgroud)

基本上,这会获取版本号并将其传递回成功回调.(我不认为这种方法确实有失败的情况,所以它没有失败的回调.)

为了完整起见,Xcode不会自动更新文件(实际上有意义),但我总是忘记.仅仅因为您的文件位于项目目录中,并不意味着它们在您的项目中.不要忘记将它们拖到项目的Plugins目录中:

将文件拖到项目中.

另外,请确保将插件添加到Cordova.plist Plugins条目中:

编辑Cordova.plist

从那里,从JavaScript调用该方法非常简单(确保在deviceready触发后使用它):

// get and show the version number
var gotVersionNumber = function(version) {
    // cache value so we can use it later if we need it
    Hub.Global.Version = version;
    $('.version-number').text(version);
};

// my plugin doesn't even have a failure callback, so we pass null.
// 5th param (parameters to pass into our Obj-C method) is NOT 
// optional. must be at least empty array
cordova.exec(gotVersionNumber, null, "MyCDVPlugin", "getVersionNumber", []);
Run Code Online (Sandbox Code Playgroud)

而已!简单,对...?希望这有助于其他人对PhoneGap的Obj-C方面有点不知所措.

  • 找到这个答案后,我把它打包成一个兼容插件的插件,并在此基础上添加了android支持.项目在这里:github.com/whiteoctober/cordova-plugin-app-version(编辑过的URL) (3认同)