IOS PhoneGap项目调用NATIVE
1.今天项目需要为PhoneGap项目,添加推送功能,网上搜了一大片,折腾了一会,总算折腾出来了,记录一下
分析一下思路,1,需要获得deviceToken,2,js获取TOKEN
①.注册推送
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { //注册推送 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; }
②.获得token,并且放入UserDefault中
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{ //得到token {xxxxx-xxxx-xxx}NSString *newToken = [deviceToken description]; //截取中间部分NSString *token = [newToken substringWithRange:NSMakeRange(1, newToken.length-2)]; //去掉空格NSString *temp = [token stringByReplacingOccurrencesOfString:@" " withString:@""]; //持久化token[[NSUserDefaults standardUserDefaults] setObject:temp forKey:@"token"];
}
二、调用Navite代码,获取token
①.创建插件,可以再plugins文件夹下创建
②.MyPlugin.h
#import <Cordova/CDVPlugin.h>@interface MyPlugin : CDVPlugin- (void) getToken:(CDVInvokedUrlCommand*) command;@end
MyPlugin.m
#import "MyPlugin.h"@implementation MyPlugin- (void) getToken:(CDVInvokedUrlCommand*) command{CDVPluginResult* pluginResult = nil; // NSString* echo = [command.arguments objectAtIndex:0];// if (echo != nil && [echo length] > 0) { // pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo]; // } else { // pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR]; // } //从UserDefault中取的token,并且封装成结果返回 //如果是别的逻辑处理,记得吧结果封装就可以了pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:[[NSUserDefaults standardUserDefaults] objectForKey:@"token"]];[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; }
③.在config.xml中配置我们的插件
<!-- Deprecated plugins element. REmove in 3.0 --><plugins> //name为JS调用时的名字<feature name="myPlugin"> //name不能改变 value为我们刚才创建的插件名字<param name="ios-package" value="MyPlugin" /></feature></plugins>
④.封装一下调用方法
创建一个通用JS,MyPlugin.js
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);} };
⑤.测试一下
在index.html页面中引入刚才的MyPlugin.js
然后index.html写
<script> // //等待加载PhoneGapdocument.addEventListener("deviceready", onDeviceReady, false);// PhoneGap加载完成 //调用native,必须是在设备准备好之后才能调用 function onDeviceReady(){var echo = MyIOSPlugin.nativeFunction("getToken",[''],function(result) {},function(error) {}); //echo就是我们通过调用navite获取我们刚才得到的设备IDwindow.device=echo;} </script>
使用phoneGap打包时候,target=7.0一下的时候遇到了问题,这样解决
Property 'edgesForExtendedLayout' not found on object of type 'LAViewController *'
Use of undeclared identifier 'UIRectEdgeNone'
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
#define IOS7_SDK_AVAILABLE 1
#endif
#ifdef IOS7_SDK_AVAILABLE
//把这段代码包起来,如果系统是ios7则执行这个方法
if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
self.edgesForExtendedLayout = UIRectEdgeNone;
}
#endif
转载于:https://www.cnblogs.com/wangdongBlog/p/3682529.html
IOS PhoneGap项目调用NATIVE相关推荐
- PhoneGap(Cordova) :js调用native(2) ------Android篇
本文讲解如何使用PhoneGap(Cordova) 调用Android中的方法 1. 使用原生的方法 在演示前介绍下不使用PhoneGap前是如何实现的 http://blog.csdn.net/qq ...
- 如何在iOS上运行React Native应用
by Soujanya PS 通过Soujanya PS 如何在iOS上运行React Native应用 (How to run a React Native app on iOS) I recent ...
- 在Android和iOS设备上调用C++代码
不少Android和iOS项目中,因为种种原因不得不调用C/C++代码.这篇文章主要讲述如何通过Objective-C++.NDK技术在iOS及Android设备上调用C/C++代码. 主要工作原理 ...
- ios小项目——新浪微博客户端总结
2019独角兽企业重金招聘Python工程师标准>>> 们还是登录不了,你们要用还是得自己申请appkey并且把回调网址设为baidu.或者是再下面留言,留下你的微博uid我把你加入 ...
- 直接拿来用!最火的iOS开源项目
摘要:iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目已被弃用,有的则继续发扬光大,新项目更是层出不穷.在本文中,我们将继续为大家介绍20个在GitHub ...
- 直接拿来用!最火的iOS开源项目(二)
每一次的改变总意味着新的开始."这句话用在iOS上可谓是再合适不过的了.GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iO ...
- java调用jni接口,Java 中通过jni接口调用native code
[ Java语言本身是通过Java的虚拟机解释执行的,因此对于Java中调用本地动态链接库的问题便提上了日程,为何会存在这样的需求呢?因为Java本身的机制导致一些要求高效率 在上上篇中已经介绍 ...
- GitHub上最火的40个iOS开源项目(二)
http://www.open-open.com/lib/view/open1388316950609.html GitHub上最火的40个Android开源项目(一) GitHub上最火的40个An ...
- java native函数库_Java 层调用 Native 层函数的两种方式
概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...
- h5在ios系统里调用微信jsdk失败
问题:h5项目在微信浏览器里,在ios系统下调用微信jssdk失效,报签名失败:在安卓系统里没有这种问题(打开jsdk debug: true,可快速定位问题) 原因:基于vue spa,在histo ...
最新文章
- hdu 1325poj 1308 并查集(未解决)(掌握率50%)
- 以下关于CISC和RISC的叙述中,错误的是()【最全!最详细总结!】
- 20151118小问题
- 假设linux分配给u盘设备名是,嵌入式linux开发基础试卷-应用物理A答案
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- java 反解析cron_Java解析Cron表达式
- 用VC进行64位编程
- excel跨多个表格求和_收藏学习!一个Excel函数搞定进销存报表,你还在花钱买软件?...
- [LeetCode] Maxium Subarray
- 计算机教室消防说明,6.7 消防专用电话的设置
- leetcode 5230 Check If It Is a Straight Line
- Python标准库之正则表达式(re库)
- 倍福PLC部署Jenkins入门使用笔记
- 拆解B站内容运营新思路,UP主如何在内卷严重赛道中“求同存异”
- SpringMVC、SpringMVC XML配置(纯XML方式)
- react 学习(三) 组件更新
- mul matlab,[转载]Matlab boxplot for Mul
- 推荐系统开源软件列表汇总和点评
- 阿里大变局,马云女弟子掌舵淘宝
- HTML5期末大作业:生鲜超市网站设计——生鲜超市网站设计(5页)HTML+CSS+JavaScript 学生DW网页设计作业成品 美食站