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相关推荐

  1. PhoneGap(Cordova) :js调用native(2) ------Android篇

    本文讲解如何使用PhoneGap(Cordova) 调用Android中的方法 1. 使用原生的方法 在演示前介绍下不使用PhoneGap前是如何实现的 http://blog.csdn.net/qq ...

  2. 如何在iOS上运行React Native应用

    by Soujanya PS 通过Soujanya PS 如何在iOS上运行React Native应用 (How to run a React Native app on iOS) I recent ...

  3. 在Android和iOS设备上调用C++代码

    不少Android和iOS项目中,因为种种原因不得不调用C/C++代码.这篇文章主要讲述如何通过Objective-C++.NDK技术在iOS及Android设备上调用C/C++代码. 主要工作原理 ...

  4. ios小项目——新浪微博客户端总结

    2019独角兽企业重金招聘Python工程师标准>>> 们还是登录不了,你们要用还是得自己申请appkey并且把回调网址设为baidu.或者是再下面留言,留下你的微博uid我把你加入 ...

  5. 直接拿来用!最火的iOS开源项目

    摘要:iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目已被弃用,有的则继续发扬光大,新项目更是层出不穷.在本文中,我们将继续为大家介绍20个在GitHub ...

  6. 直接拿来用!最火的iOS开源项目(二)

    每一次的改变总意味着新的开始."这句话用在iOS上可谓是再合适不过的了.GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iO ...

  7. java调用jni接口,Java 中通过jni接口调用native code

    [    Java语言本身是通过Java的虚拟机解释执行的,因此对于Java中调用本地动态链接库的问题便提上了日程,为何会存在这样的需求呢?因为Java本身的机制导致一些要求高效率 在上上篇中已经介绍 ...

  8. GitHub上最火的40个iOS开源项目(二)

    http://www.open-open.com/lib/view/open1388316950609.html GitHub上最火的40个Android开源项目(一) GitHub上最火的40个An ...

  9. java native函数库_Java 层调用 Native 层函数的两种方式

    概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...

  10. h5在ios系统里调用微信jsdk失败

    问题:h5项目在微信浏览器里,在ios系统下调用微信jssdk失效,报签名失败:在安卓系统里没有这种问题(打开jsdk debug: true,可快速定位问题) 原因:基于vue spa,在histo ...

最新文章

  1. hdu 1325poj 1308 并查集(未解决)(掌握率50%)
  2. 以下关于CISC和RISC的叙述中,错误的是()【最全!最详细总结!】
  3. 20151118小问题
  4. 假设linux分配给u盘设备名是,嵌入式linux开发基础试卷-应用物理A答案
  5. Android根据分辨率进行单位转换-(dp,sp转像素px)
  6. java 反解析cron_Java解析Cron表达式
  7. 用VC进行64位编程
  8. excel跨多个表格求和_收藏学习!一个Excel函数搞定进销存报表,你还在花钱买软件?...
  9. [LeetCode] Maxium Subarray
  10. 计算机教室消防说明,6.7 消防专用电话的设置
  11. leetcode 5230 Check If It Is a Straight Line
  12. Python标准库之正则表达式(re库)
  13. 倍福PLC部署Jenkins入门使用笔记
  14. 拆解B站内容运营新思路,UP主如何在内卷严重赛道中“求同存异”
  15. SpringMVC、SpringMVC XML配置(纯XML方式)
  16. react 学习(三) 组件更新
  17. mul matlab,[转载]Matlab boxplot for Mul
  18. 推荐系统开源软件列表汇总和点评
  19. 阿里大变局,马云女弟子掌舵淘宝
  20. HTML5期末大作业:生鲜超市网站设计——生鲜超市网站设计(5页)HTML+CSS+JavaScript 学生DW网页设计作业成品 美食站

热门文章

  1. 三台服务器的时间同步-Linux
  2. vue-cli@webpack@4打包分析命令
  3. 后台异常 - Content is not allowed in prolog
  4. OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
  5. 思科接入层交换机故障
  6. [转]编程的首要原则(s)是什么?
  7. 进程占用导致linux中命令无法执行
  8. Android 热修复的相关总结(主要是阿里百川的)
  9. 用浏览器控制台查看ajax请求
  10. word加载项打包发布注意事项总结