[如何用phonegap判断ios开发]如何用phonegap判断iOS版本并设置兼容教程详解

更新时间:2019-09-11    来源:ios    手机版     字体:

【www.bbyears.com--ios】

什么是Phonegap

Phonegap是一款开源的开发框架,旨在让开发者使用HTML、Javascript、CSS等Web APIs开发跨平台的移动应用程序。原本由Nitobi公司开发,现在由Adobe拥有。

它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等,也可以和DW5.5及以上版本配套开发。使用PhoneGap只比为每个平台分别建立应用程序好一点点,因为虽然基本代码是一样的,但是你仍然需要为每个平台分别编译应用程序。

phonegap判断iOS版本并设置兼容

在 iOS7, 所有的应用都是全屏运行的,此时状态栏层叠在应用界面上. 导致头部的内容或者界面被覆盖:
ios71
社区中讨论解决该问题的方法. 他们中的一些涉及原生代码,以兼容web视图.其实最简单和干净的解决方案是增加一个20像素的顶部边缘到文档的body加入 CSS. 你可以通过版本检查避免添加 margin 属性在 iOS 6. 代码如下:

function onDeviceReady() {
    if (parseFloat(window.device.version) >= 7.0) {
          document.body.style.marginTop = "20px";
    }
}
document.addEventListener("deviceready", onDeviceReady, false);

修复结果:
ios72
附上iOS原生代码解决方案:

- (void)viewWillAppear:(BOOL)animated 
{
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 
        CGRect viewBounds = [self.webView bounds]; 
        viewBounds.origin.y = 20; 
        viewBounds.size.height = viewBounds.size.height - 20; 
        self.webView.frame = viewBounds; 
    } 
    [super viewWillAppear:animated]; 
}

phoneGap开发IOS,JS调用IOS方法/phoneGap插件开发

前沿

废话不说phoneGap是什么不多介绍,官方网站: http://phonegap.com/

之前写过phoneGap开发Android插件教程: http://my.oschina.net/jgy/blog/145385

开始代码

这个是目录结构

 

如何用phonegap判断iOS版本并设置兼容教程详解

 

在Plugins下新建文件(在 Plugins 上右键-new file选择Objective-c class)输入名字( CDVMyPlugin ) next……

这世间你会发现在 Plugins 下面有两个文件,分别是:CDVMyPlugin.h和CDVMyPlugin.m

CDVMyPlugin.h内容:

#import
#import

@interface CDVMyPlugin : CDVPlugin
 
  @property (nonatomic, copy) NSString* callbackID;
 
  // Instance Method

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

@end

CDVMyPlugin.m内容

#import "CDVMyPlugin.h"

@implementation CDVMyPlugin

@synthesize callbackID;


  -(void)print:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
  {
   
    // 这是classid,在下面的PluginResult进行数据的返回时,将会用到它
    self.callbackID = [arguments pop];
   
    // 得到Javascript端发送过来的字符串
    NSString *stringObtainedFromJavascript = [arguments objectAtIndex:0];
   
    // 创建我们要返回给js端的字符串
    NSMutableString *stringToReturn = [NSMutableString stringWithString: @"我是返回的:"];
   
    [stringToReturn appendString: stringObtainedFromJavascript];
   
    // Create Plugin Result
    CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: stringToReturn];
   
    NSLog(@ "%@",stringToReturn);
   
    // 检查发送过来的字符串是否等于"HelloWorld",如果不等,就以PluginResult的Error形式返回
    if ([stringObtainedFromJavascript isEqualToString:@"HelloWorld"] == YES){
      // Call the javascript success function
      [self writeJavascript: [pluginResult toSuccessCallbackString:self.callbackID]];
    } else{
      // Call the javascript error function
      [self writeJavascript: [pluginResult toErrorCallbackString:self.callbackID]];
    }
  }

JS封装通用调用方法

//调用IOS方法插件
var MyIOSPlugin = {
/**
* 调用IOS方法
* @param method 要调用IOS插件的方法名
* @param parameter 参数[数组]
* @param success 成功回调
* @param fail 失败回调
* @returns {*}
*/
nativeFunction: function(method, parameter, success, fail) {
return Cordova.exec(success, fail, "MyPlugin", method, parameter);
}
};

JS调用

MyIOSPlugin.nativeFunction("print",["HelloWorld"],
function(result) {
// alert("Success: rn"+result);
},
function(error) {
// alert("Error: rn"+error);
}
);

 配置插件


        ios-package" value="CDVMyPlugin" />

本文来源:http://www.bbyears.com/shoujikaifa/67417.html

热门标签

更多>>

本类排行