l## JPush PhoneGap Plugin ## ###准备工作 1. cordova create 文件夹名字 包名 应用名字 cordova create Myproj com.myproj.jpush MyTestProj 2. 添加平台 cd Myproj cordova platform add android cordova platform add ios ps:这里请注意iOS平台,必须先执行 `cordova platform add ios`, 然后再执行`cordova plugin add xxxxx`命令,不然有一些必须要的链接库需要手动添加 ###Cordova CLI/Phonegap 安装 Android & iOS 3. 使用git命令将jpush phonegap插件下载的本地,将这个目录标记为`$JPUSH_PLUGIN_DIR` git clone https://github.com/jpush/jpush-phonegap-plugin.git 4. 将`$JPUSH_PLUGIN_DIR/plugin.xml`文件中的AppKey替换为在Portal上注册该应用的的Key,例如(9fed5bcb7b9b87413678c407) 5. 在`$JPUSH_PLUGIN_DIR/src/android/JPushPlugin.java` 文件`import your.package.name.R`替换为在Portal上注册该应用的包名,例如(com.thi.pushtest) 6. cordova cli 添加jpush phonegap插件和依赖的device插件: cordova plugin add $JPUSH_PLUGIN_DIR cordova plugin add org.apache.cordova.device 7. iOS添加初始化JPush sdk代码 如果你要先部署android平台,可以先忽略这一步,当需要iOS 平台时,只加上这个步骤即可 + 用xcode 打开 Myproj下的iOS工程 + 打开xcode右边工程目录下`Resources/PushConfig.plist` 在APP_KEY和CHANNLE字段 分别添加您的appkey和channle + 打开xcode右边工程目录下`AppDelegate.m`,包含以下头文件 #import "APService.h" #import "JPushPlugin.h" + 在AppDelegate.m文件中,添加JPush SDK 提供的 API 来实现功能 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ //原内容保持不变 //Required add [JPushPlugin setLaunchOptions:launchOptions]; return YES; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { //原内容保持不变 // Required add [APService registerDeviceToken:deviceToken]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { //原内容保持不变 // Required [APService handleRemoteNotification:userInfo]; [[NSNotificationCenter defaultCenter] postNotificationName:kJPushPluginReceiveNotification object:userInfo]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required [APService handleRemoteNotification:userInfo]; [[NSNotificationCenter defaultCenter] postNotificationName:kJPushPluginReceiveNotification object:userInfo]; completionHandler(UIBackgroundFetchResultNewData); } 7. 在js中调用函数,初始化jpush sdk window.plugins.jPushPlugin.init(); //由于phonegap插件采用了Lazy load的特性, 所以这里建议在js文件能执行的最开始就加 ### Android 手工安装 [Android 手工安装文档地址](document/Android_handle_install.md) ### IOS手工安装 [IOS手工安装文档地址](document/iOS_handle_install.md) ###示例 1. "$JPUSH_PLUGIN_DIR/example"文件夹内找到并拷贝以下文件 src/example/index.html to www/index.html src/example/css/* to www/css src/example/js/* to www/js ###关于'phonegap build'云服务 该项目基于cordova实现,目前无法使用'phonegap build'云服务进行打包,建议使用本地环境进行打包 ###常见错误 1. androd eclipse中phonegap工程import之后出现:`Type CallbackContext cannot be resolved to a type` 解决方案:eclipse中右键单击工程名,Build Path->Config Build Path->Projects->选中 工程名称-CordovaLib->点击 add ### API说明 插件的API集中在JPushPlugin.js文件中,这个文件的位置如下 * android:[YOUR__ANDROID_PROJECT]/assets/www/plugins/cn.jpush.phonegap.JPushPlugin/www * iOS:[YOUR_iOS_PROJEcT]/www/plugins/cn.jpush.phonegap.JPushPlugin/www 具体的API请参考这里 #### iOS和adnroid通用API简介 + 停止与恢复推送服务 API window.plugins.jPushPlugin.init() window.plugins.jPushPlugin.stopPush() window.plugins.jPushPlugin.resumePush() window.plugins.jPushPlugin.isPushStopped(callback) + 获取 RegistrationID API window.plugins.jPushPlugin.getRegistrationID(callback) + 别名与标签 API window.plugins.jPushPlugin.setTagsWithAlias(tags,alias) window.plugins.jPushPlugin.setTags(tags) window.plugins.jPushPlugin.setAlias(alias) + 获取通知内容 event - jpush.openNotification + 获取自定义消息推送内容 event - jpush.receiveMessage [通用API详细说明](document/Common_detail_api.md) #### iOS API简介 + 获取 APNs(通知) 推送内容 event - jpush.receiveNotification + 获取自定义消息推送内容 event - jpush.receiveMessage //推荐使用事件的方式传递,但同时保留了receiveMessageIniOSCallback的回调函数,兼容以前的代码 window.plugins.jPushPlugin.receiveMessageIniOSCallback(data) + 页面的统计 window.plugins.jPushPlugin.startLogPageView (pageName) window.plugins.jPushPlugin.stopLogPageView (pageName) window.plugins.jPushPlugin.beginLogPageView (pageName,duration) + 设置Badge window.plugins.jPushPlugin.setBadge(value) window.plugins.jPushPlugin.resetBadge() window.plugins.jPushPlugin.setApplicationIconBadgeNumber(badge) + 本地通知 + 后续版本加入 + 日志等级设置 window.plugins.jPushPlugin.setDebugModeFromIos () window.plugins.jPushPlugin.setLogOFF() [iOS API详细说明](document/iOS_detail_api.md) #### adnroid API简介 + 获取集成日志 window.plugins.jPushPlugin.setDebugMode(mode) + 接收推送消息Receiver //推荐使用event jpush.Message和jpush.openNotification, //下面这两个api 是兼容旧有的代码 window.plugins.jPushPlugin.receiveMessageInAndroidCallback(data) window.plugins.jPushPlugin.openNotificationInAndroidCallback(data) + 统计分析 API onResume / onPause(java api) + 清除通知 API window.plugins.jPushPlugin.clearAllNotification() + 通知栏样式定制 API window.plugins.jPushPlugin.setBasicPushNotificationBuilder = function() window.plugins.jPushPlugin.setCustomPushNotificationBuilder = function() + 设置保留最近通知条数 API window.plugins.jPushPlugin.setLatestNotificationNum(num) + 本地通知API window.plugins.jPushPlugin.addLocalNotification(builderId, content, title, notificaitonID, broadcastTime, extras) window.plugins.jPushPlugin.removeLocalNotification(notificationID) window.plugins.jPushPlugin.clearLocalNotifications() [Android API详细说明](document/Android_detail_api.md) ###更多 [JPush官网文档](http://docs.jpush.io/)