Compare commits

...

16 Commits

Author SHA1 Message Date
Hevin 01a89fd293 Merge branch 'dev' 2016-04-08 10:32:30 +08:00
Hevin a1cef0866c update README.md
support add plugin via cordova plugins
2016-04-08 10:18:34 +08:00
Hevin 24dea0821f version 2.1.1
add package.json, upload plugin to cordova plugins
2016-04-08 09:43:00 +08:00
Hevin 20f1eb6e27 Merge branch 'master' into dev 2016-03-30 23:20:00 +08:00
Hevin 1bafafffc5 resolve conflict
# Conflicts:
#	README.md
2016-03-30 23:08:38 +08:00
Hevin cc31bc6b84 format .md 2016-03-30 22:12:49 +08:00
Javen Fang 76153bb524 Update README.md 2016-03-30 16:24:09 +08:00
Javen Fang dc33bee0e5 Update README.md 2016-03-30 16:23:18 +08:00
Hevin 661b216359 Merge pull request #139 from jpush/dev 2016-03-30 10:52:17 +08:00
Hevin e117f77a38 设置统计分析功能默认为关闭 2016-03-29 18:02:26 +08:00
Hevin b9b77840ab fix #80 2016-03-22 23:39:42 +08:00
Pikachu 7791f088b9 Update README.md
1.更新iOS api
2016-03-22 11:09:43 +08:00
E.B c2babc3a39 iOS-优化代码
1.AppDelegate+JPush.m中不再使用runtime
2016-03-21 15:30:16 +08:00
E.B a9f5fc45bd Merge remote-tracking branch 'origin/dev' into dev 2016-03-21 15:28:23 +08:00
E.B 02a2d04441 Merge branch 'master' into dev 2016-03-21 15:28:11 +08:00
Pikachuode 9f921ea7b5 Update Common_detail_api.md
整理文档
2016-03-15 18:06:13 +08:00
11 changed files with 381 additions and 324 deletions
+64 -45
View File
@@ -1,16 +1,18 @@
## JPush PhoneGap Plugin ## ## JPush PhoneGap/Cordova Plugin ##
jpush-phonegap-plugin 支持 iOS,Android 的推送插件。 JPush-PhoneGap-Plugin 支持 iOS, Android 的推送插件。
**功能特性:** **功能特性:**
>+ 发送推送通知 支持 iOS, Android 的极光推送插件。
### 功能特性
+ 发送推送通知
+ 发送推送自定义消息 + 发送推送自定义消息
+ 设置推送标签和别名 + 设置推送标签和别名
+ 设置角标(iOS + 设置角标(iOS
*如需要 IM 功能插件,请关注 [jmessage-phonegap-plugin](https://github.com/jpush/jmessage-phonegap-plugin)* *如需要 IM 功能插件,请关注 [jmessage-phonegap-plugin](https://github.com/jpush/jmessage-phonegap-plugin)*
## 安装 ## ## 安装 ##
###准备工作 ###准备工作
@@ -28,33 +30,37 @@ jpush-phonegap-plugin 支持 iOS,Android 的推送插件。
然后再执行 `cordova plugin add xxxxx` 命令,不然有一些必须要的链接库需要手动添加 然后再执行 `cordova plugin add xxxxx` 命令,不然有一些必须要的链接库需要手动添加
###Cordova CLI/Phonegap 安装 Android & iOS ###Cordova CLI / PhoneGap 安装 Android & iOS
1). 安装JPush PhoneGap Plugin 有两种方法 1). 安装 JPush PhoneGap Plugin, 有两种方法
方法一:在线安装 方法一:在线安装
通过 cordova plugins 安装,要求 phonegap/cordova CLI 5.0+ (current stable v2.1.1)
cordova plugin add jpush-phonegap-plugin --variable API_KEY=your_jpush_appkey
直接通过 url 安装(unstable
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable API_KEY=your_jpush_appkey cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable API_KEY=your_jpush_appkey
方法二:下载到本地再安装 方法二:下载到本地再安装
使用git命令将jpush phonegap插件下载的本地,将这个目录标记为`$JPUSH_PLUGIN_DIR` 使用 git 命令将 JPush PhoneGap 插件下载的本地,将这个目录标记为 `$JPUSH_PLUGIN_DIR`
git clone https://github.com/jpush/jpush-phonegap-plugin.git git clone https://github.com/jpush/jpush-phonegap-plugin.git
cordova plugin add $JPUSH_PLUGIN_DIR --variable API_KEY=your_jpush_appkey cordova plugin add $JPUSH_PLUGIN_DIR --variable API_KEY=your_jpush_appkey
2). 安装 org.apache.cordova.device 2). 安装 org.apache.cordova.device
cordova plugin add org.apache.cordova.device cordova plugin add org.apache.cordova.device
3). 在js中调用函数,初始化jpush sdk 3). 在 js 中调用函数,初始化 JPush SDK
//由于 PhoneGap 插件采用了 Lazy load 的特性,所以建议在 js 文件能执行的最开始就添加
window.plugins.jPushPlugin.init(); window.plugins.jPushPlugin.init();
//由于phonegap插件采用了Lazy load的特性, 所以这里建议在js文件能执行的最开始就加
### Android 手工安装 ### Android 手工安装
@@ -62,54 +68,60 @@ jpush-phonegap-plugin 支持 iOS,Android 的推送插件。
[Android 手工安装文档地址](document/Android_handle_install.md) [Android 手工安装文档地址](document/Android_handle_install.md)
### IOS手工安装 ### iOS 手工安装
[IOS手工安装文档地址](document/iOS_handle_install.md) [IOS手工安装文档地址](document/iOS_handle_install.md)
###示例 ###示例
1. "$JPUSH_PLUGIN_DIR/example"文件夹内找到并拷贝以下文件 "$JPUSH_PLUGIN_DIR/example"文件夹内找到并拷贝以下文件
src/example/index.html to www/index.html src/example/index.html to www/index.html
src/example/css/* to www/css src/example/css/* to www/css
src/example/js/* to www/js src/example/js/* to www/js
###关于'phonegap build'云服务 ###关于'PhoneGap build'云服务
该项目基于cordova实现,目前无法使用'phonegap build'云服务进行打包,建议使用本地环境进行打包 该项目基于 cordova 实现,目前无法使用 'PhoneGap build' 云服务进行打包,建议使用本地环境进行打包
### API 说明 ### API 说明
插件的API集中在JPushPlugin.js文件中,这个文件的位置如下 插件的 API 集中在 JPushPlugin.js 文件中,文件的具体位置如下
* android:[YOUR__ANDROID_PROJECT]/assets/www/plugins/cn.jpush.phonegap.JPushPlugin/www Android:
* iOS:[YOUR_iOS_PROJEcT]/www/plugins/cn.jpush.phonegap.JPushPlugin/www
具体的API请参考这里 [Project]/assets/www/plugins/cn.jpush.phonegap.JPushPlugin/www
#### iOS和android通用API简介 iOS:
+ 停止与恢复推送服务 API [Project]/www/plugins/cn.jpush.phonegap.JPushPlugin/www
具体的 API 请参考下面:
#### iOS 和 Android 通用 API 简介
+ 停止与恢复推送服务
window.plugins.jPushPlugin.init() window.plugins.jPushPlugin.init()
window.plugins.jPushPlugin.stopPush() window.plugins.jPushPlugin.stopPush()
window.plugins.jPushPlugin.resumePush() window.plugins.jPushPlugin.resumePush()
window.plugins.jPushPlugin.isPushStopped(callback) window.plugins.jPushPlugin.isPushStopped(callback)
+ 获取 RegistrationID
+ 获取 RegistrationID API
window.plugins.jPushPlugin.getRegistrationID(callback) window.plugins.jPushPlugin.getRegistrationID(callback)
+ 别名与标签 API + 别名与标签
window.plugins.jPushPlugin.setTagsWithAlias(tags, alias) window.plugins.jPushPlugin.setTagsWithAlias(tags, alias)
window.plugins.jPushPlugin.setTags(tags) window.plugins.jPushPlugin.setTags(tags)
window.plugins.jPushPlugin.setAlias(alias) window.plugins.jPushPlugin.setAlias(alias)
+ 获取点击通知内容 + 获取点击通知内容
event - jpush.openNotification event - jpush.openNotification
+ 获取通知内容 + 获取通知内容
event - jpush.receiveNotification event - jpush.receiveNotification
@@ -134,65 +146,71 @@ jpush-phonegap-plugin 支持 iOS,Android 的推送插件。
window.plugins.jPushPlugin.startLogPageView(pageName) window.plugins.jPushPlugin.startLogPageView(pageName)
window.plugins.jPushPlugin.stopLogPageView(pageName) window.plugins.jPushPlugin.stopLogPageView(pageName)
window.plugins.jPushPlugin.beginLogPageView(pageName, duration) window.plugins.jPushPlugin.beginLogPageView(pageName, duration)
+ 设置 Badge + 设置 Badge
window.plugins.jPushPlugin.setBadge(value) window.plugins.jPushPlugin.setBadge(value)
window.plugins.jPushPlugin.resetBadge() window.plugins.jPushPlugin.resetBadge()
window.plugins.jPushPlugin.setApplicationIconBadgeNumber(badge) window.plugins.jPushPlugin.setApplicationIconBadgeNumber(badge)
window.plugins.JPushPlugin.getApplicationIconBadgeNumber(callback)
+ 本地通知 + 本地通知
+ 后续版本加入 window.plugins.JPushPlugin.addLocalNotificationForIOS(delayTime, content, badge, notificationID, extras)
window.plugins.JPushPlugin.deleteLocalNotificationWithIdentifierKeyInIOS()
window.plugins.JPushPlugin.clearAllLocalNotifications()
+ 日志等级设置 + 日志等级设置
window.plugins.jPushPlugin.setDebugModeFromIos() window.plugins.jPushPlugin.setDebugModeFromIos()
window.plugins.jPushPlugin.setLogOFF() window.plugins.jPushPlugin.setLogOFF()
window.plugins.JPushPlugin.setCrashLogON()
+ 地理位置上报
window.plugins.JPushPlugin.setLocation(latitude, longitude)
[iOS API 详细说明](document/iOS_detail_api.md) [iOS API 详细说明](document/iOS_detail_api.md)
#### android API简介 #### Android API简介
+ 获取集成日志 + 获取集成日志
window.plugins.jPushPlugin.setDebugMode(mode) window.plugins.jPushPlugin.setDebugMode(mode)
+ 接收推送消息和点击通知 + 接收推送消息和点击通知
//下面这两个api 是兼容旧有的代码 //下面这两个 API 是兼容旧有的代码
window.plugins.jPushPlugin.receiveMessageInAndroidCallback(data) window.plugins.jPushPlugin.receiveMessageInAndroidCallback(data)
window.plugins.jPushPlugin.openNotificationInAndroidCallback(data) window.plugins.jPushPlugin.openNotificationInAndroidCallback(data)
+ 统计分析 API + 统计分析
window.plugins.jPushPlugin.setStatisticsOpen(boolean) window.plugins.jPushPlugin.setStatisticsOpen(boolean)
或在 MainActivity 中的 onPause() 和 onResume() 方法中分别调用 或在 MainActivity 中的 onPause() 和 onResume() 方法中分别调用
JPushInterface.onResume(this) 和 JPushInterface.onPause(this) 来启用统计分析功能, JPushInterface.onPause(this) 和 JPushInterface.onResume(this) 来启用统计分析功能,
如果使用这种方式启用统计分析功能,则 window.plugins.jPushPlugin.setStatisticsOpen(boolean) 如果使用这种方式启用统计分析功能,则 window.plugins.jPushPlugin.setStatisticsOpen(boolean)
方法不再有效,建议不要同时使用。 方法不再有效,建议不要同时使用。
+ 清除通知 API + 清除通知
window.plugins.jPushPlugin.clearAllNotification() window.plugins.jPushPlugin.clearAllNotification()
+ 通知栏样式定制 API + 通知栏样式定制
window.plugins.jPushPlugin.setBasicPushNotificationBuilder = function() window.plugins.jPushPlugin.setBasicPushNotificationBuilder = function()
window.plugins.jPushPlugin.setCustomPushNotificationBuilder = function() window.plugins.jPushPlugin.setCustomPushNotificationBuilder = function()
+ 设置保留最近通知条数 API + 设置保留最近通知条数
window.plugins.jPushPlugin.setLatestNotificationNum(num) window.plugins.jPushPlugin.setLatestNotificationNum(num)
+ 本地通知API + 本地通知
window.plugins.jPushPlugin.addLocalNotification(builderId, window.plugins.jPushPlugin.addLocalNotification(builderId, content,
content, title, notificaitonID, broadcastTime, extras)
title,
notificaitonID,
broadcastTime,
extras)
window.plugins.jPushPlugin.removeLocalNotification(notificationID) window.plugins.jPushPlugin.removeLocalNotification(notificationID)
window.plugins.jPushPlugin.clearLocalNotifications() window.plugins.jPushPlugin.clearLocalNotifications()
@@ -200,16 +218,17 @@ jpush-phonegap-plugin 支持 iOS,Android 的推送插件。
###常见问题 ###常见问题
####1. android ####1. Android
eclipse中phonegap工程import之后出现:`Type CallbackContext cannot be resolved to a type` eclipse 中 PhoneGap 工程 import 之后出现`Type CallbackContext cannot be resolved to a type`
解决方案:eclipse中右键单击工程名,Build Path->Config Build Path->Projects->选中 工程名称CordovaLib->点击 add 解决方案:eclipse 中右键单击工程名,Build Path -> Config Build Path -> Projects -> 选中工程名称 -> CordovaLib -> 点击 add
####2. iOS 设置 / 修改 APP_KEY ####2. iOS 设置 / 修改 APP_KEY
在PushConfig.plist 中修改。PushConfig.plist 其他值说明: PushConfig.plist 中修改。
CHANNEL 渠道标识 PushConfig.plist 其他值说明:
IsProduction 是否生产环境(暂未启用) CHANNEL: 渠道标识
IsProduction: 是否生产环境(暂未启用)
+6 -10
View File
@@ -1,4 +1,4 @@
## adnroid API简介 ## Android API简介
@@ -6,7 +6,7 @@
#### API - setDebugMode #### API - setDebugMode
用于开启调试模式,可以查看集成JPush过程中的log,如果集成失败,可方便定位问题所在 用于开启调试模式,可以查看集成 JPush 过程中的 Log,如果集成失败,可方便定位问题所在
##### 接口定义 ##### 接口定义
@@ -23,7 +23,7 @@
### 接收消息和点击通知事件 ### 接收消息和点击通知事件
#### API - receiveMessageInAndroidCallback #### API - receiveMessageInAndroidCallback
用于android收到应用内消息的回调函数(请注意和通知的区别),该函数不需要主动调用 用于 Android 收到应用内消息的回调函数(请注意和通知的区别),该函数不需要主动调用
##### 接口定义 ##### 接口定义
@@ -36,7 +36,7 @@
#### API - openNotificationInAndroidCallback #### API - openNotificationInAndroidCallback
当点击android手机的通知栏进入应用程序时,会调用这个函数,这个函数不需要主动调用,是作为回调函数来用的 当点击 Android 手机的通知栏进入应用程序时,会调用这个函数,这个函数不需要主动调用,是作为回调函数来用的
##### 接口定义 ##### 接口定义
@@ -51,7 +51,7 @@
### 统计分析 API ### 统计分析 API
#### API - onResume / onPause #### API - onResume / onPause
这是一个 android local api,不是js的api,请注意 这是一个 android local api,不是 js 的 API,请注意
本 API 用于“用户使用时长”,“活跃用户”,“用户打开次数”的统计,并上报到服务器,在 Portal 上展示给开发者。 本 API 用于“用户使用时长”,“活跃用户”,“用户打开次数”的统计,并上报到服务器,在 Portal 上展示给开发者。
@@ -178,11 +178,7 @@
#####接口定义 #####接口定义
window.plugins.jPushPlugin.addLocalNotification = function(builderId, window.plugins.jPushPlugin.addLocalNotification = function(builderId,
content, content, title, notificaitonID, broadcastTime, extras)
title,
notificaitonID,
broadcastTime,
extras)
window.plugins.jPushPlugin.removeLocalNotification = function(notificationID) window.plugins.jPushPlugin.removeLocalNotification = function(notificationID)
window.plugins.jPushPlugin.clearLocalNotifications = function() window.plugins.jPushPlugin.clearLocalNotifications = function()
+24 -5
View File
@@ -1,6 +1,6 @@
#Android 手工安装 #Android 手工安装
下载jpush phonegap插件,并解压缩,标记插件目录为:`$JPUSH_PLUGIN_DIR` 下载 JPush PhoneGap 插件,并解压缩,标记插件目录为:`$JPUSH_PLUGIN_DIR`
1. 复制:`$JPUSH_PLUGIN_DIR`/src/android/*.java 到 cn/jpush/phonega/ 目录下(即:cn.jpush.phonegap 的包下) 1. 复制:`$JPUSH_PLUGIN_DIR`/src/android/*.java 到 cn/jpush/phonega/ 目录下(即:cn.jpush.phonegap 的包下)
2. 复制:`$JPUSH_PLUGIN_DIR`/src/android/armeabi/libjpush.so 到 lib/armeabi/ 2. 复制:`$JPUSH_PLUGIN_DIR`/src/android/armeabi/libjpush.so 到 lib/armeabi/
@@ -33,16 +33,19 @@
android:configChanges="orientation|keyboardHidden"> android:configChanges="orientation|keyboardHidden">
<intent-filter> <intent-filter>
<action android:name="cn.jpush.android.ui.PushActivity"/> <action android:name="cn.jpush.android.ui.PushActivity"/>
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT"/>
<category android:name="$PACKAGE_NAME"/> <category android:name="$PACKAGE_NAME"/>
</intent-filter> </intent-filter>
</activity> </activity>
<!-- Required SDK 核心功能--> <!-- Required SDK 核心功能-->
<service <service
android:name="cn.jpush.android.service.DownloadService" android:name="cn.jpush.android.service.DownloadService"
android:enabled="true" android:enabled="true"
android:exported="false"> android:exported="false">
</service> </service>
<!-- Required SDK 核心功能--> <!-- Required SDK 核心功能-->
<service <service
android:name="cn.jpush.android.service.PushService" android:name="cn.jpush.android.service.PushService"
@@ -53,22 +56,25 @@
<action android:name="cn.jpush.android.intent.REPORT"/> <action android:name="cn.jpush.android.intent.REPORT"/>
<action android:name="cn.jpush.android.intent.PushService"/> <action android:name="cn.jpush.android.intent.PushService"/>
<action android:name="cn.jpush.android.intent.PUSH_TIME"/> <action android:name="cn.jpush.android.intent.PUSH_TIME"/>
</intent-filter> </intent-filter>
</service> </service>
<!-- Required SDK 核心功能--> <!-- Required SDK 核心功能-->
<receiver <receiver
android:name="cn.jpush.android.service.PushReceiver" android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true"> android:enabled="true">
<intent-filter android:priority="1000"> <intent-filter android:priority="1000">
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/>
<!--Required 显示通知栏 --> <!--Required 显示通知栏 -->
<category android:name="$PACKAGE_NAME"/> <category android:name="$PACKAGE_NAME"/>
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.USER_PRESENT"/> <action android:name="android.intent.action.USER_PRESENT"/>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter> </intent-filter>
<!-- Optional --> <!-- Optional -->
<intent-filter> <intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED"/> <action android:name="android.intent.action.PACKAGE_ADDED"/>
@@ -83,26 +89,39 @@
android:enabled="true"> android:enabled="true">
<intent-filter android:priority="1000"> <intent-filter android:priority="1000">
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/>
<!-- Required 显示通知栏 --> <!-- Required 显示通知栏 -->
<category android:name="$PACKAGE_NAME"/> <category android:name="$PACKAGE_NAME"/>
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
<action android:name="cn.jpush.android.intent.REGISTRATION"/> <action android:name="cn.jpush.android.intent.REGISTRATION"/>
<!-- Required 用户注册 SDK 的intent --> <!-- Required 用户注册 SDK 的intent -->
<action android:name="cn.jpush.android.intent.UNREGISTRATION"/> <action android:name="cn.jpush.android.intent.UNREGISTRATION"/>
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED"/> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED"/>
<!-- Required 用户接收 SDK 消息的intent --> <!-- Required 用户接收 SDK 消息的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED"/> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED"/>
<!-- Required 用户接收 SDK 通知栏信息的intent --> <!-- Required 用户接收 SDK 通知栏信息的intent -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED"/> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED"/>
<!-- Required 用户打开自定义通知栏的intent --> <!-- Required 用户打开自定义通知栏的intent -->
<action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK"/> <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK"/>
<!-- Optional 用户接受 Rich Push Javascript 回调函数的intent --> <!-- Optional 用户接受 Rich Push Javascript 回调函数的intent -->
<category android:name="$PACKAGE_NAME"/> <category android:name="$PACKAGE_NAME"/>
</intent-filter> </intent-filter>
</receiver> </receiver>
<!-- Required SDK核心功能--> <!-- Required SDK核心功能-->
<receiver android:name="cn.jpush.android.service.AlarmReceiver"/> <receiver
android:name="cn.jpush.android.service.AlarmReceiver"/>
<!-- Required. Enable it you can get statistics data with channel --> <!-- Required. Enable it you can get statistics data with channel -->
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/> <meta-data
<meta-data android:name="JPUSH_APPKEY" android:value="299d0fee887820e7d90a68b2"/> android:name="JPUSH_CHANNEL" android:value="developer-default"/>
<meta-data
android:name="JPUSH_APPKEY" android:value="299d0fee887820e7d90a68b2"/>
+28 -29
View File
@@ -25,9 +25,9 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
window.plugins.jPushPlugin.init() window.plugins.jPushPlugin.init()
### API - stopPush ### API - stopPush
+ 在android平台 + 在 Android 平台
+ 开发者App可以通过调用停止推送服务API来停止极光推送服务当又需要使用极光推送服务时,则必须要调用恢复推送服务 API。 + 开发者 App 可以通过调用停止推送服务 API 来停止极光推送服务当又需要使用极光推送服务时,则必须要调用恢复推送服务 API。
+ 调用了本 API 后,JPush 推送服务完全被停止。具体表现为: + 调用了本 API 后,JPush 推送服务完全被停止。具体表现为:
@@ -40,7 +40,7 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
+ iOS 平台 + iOS 平台
+ 不推荐调用,因为这个 API 只是让你的 DeviceToken 失效,在 设置-通知 中您的应用程序没有任何变化 + 不推荐调用,因为这个 API 只是让你的 DeviceToken 失效,在 设置-通知 中您的应用程序没有任何变化
+ 推荐:设置一个UI界面, 提醒用户在设置-通知关闭推送服务 + 推荐:设置一个 UI 界面, 提醒用户在 设置-通知关闭推送服务
### 接口定义 ### 接口定义
@@ -52,7 +52,7 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
恢复推送服务。调用了此 API 后 恢复推送服务。调用了此 API 后
+ 在android平台 + 在 Android 平台
+ 极光推送完全恢复正常工作, + 极光推送完全恢复正常工作,
@@ -68,7 +68,7 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
#### API - isPushStopped #### API - isPushStopped
+ 在android平台 + 在 Android 平台
+ 用来检查 Push Service 是否已经被停止 + 用来检查 Push Service 是否已经被停止
@@ -103,7 +103,8 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
RegistrationID 定义 RegistrationID 定义
集成了 JPush SDK 的应用程序在第一次成功注册到 JPush 服务器时,JPush 服务器会给客户端返回一个唯一的该设备的标识 - RegistrationID。JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。 集成了 JPush SDK 的应用程序在第一次成功注册到 JPush 服务器时,JPush 服务器会给客户端返回一个唯一的该设备的标识 - RegistrationID。
JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
应用程序可以把此 RegistrationID 保存以自己的应用服务器上,然后就可以根据 RegistrationID 来向设备推送消息或者通知。 应用程序可以把此 RegistrationID 保存以自己的应用服务器上,然后就可以根据 RegistrationID 来向设备推送消息或者通知。
@@ -122,8 +123,8 @@ RegistrationID 定义
window.plugins.jPushPlugin.getRegistrationID(onGetRegistradionID); window.plugins.jPushPlugin.getRegistrationID(onGetRegistradionID);
var onGetRegistradionID = function(data) { var onGetRegistradionID = function(data) {
try { try {
console.log("JPushPlugin:registrationID is "+data) } console.log("JPushPlugin:registrationID is " + data)
catch(exception){ } catch(exception) {
console.log(exception); console.log(exception);
} }
} }
@@ -136,7 +137,7 @@ RegistrationID 定义
这几个 API 可以在 App 里任何地方调用。 这几个 API 可以在 App 里任何地方调用。
别名 alias **别名 Alias**
为安装了应用程序的用户,取个别名来标识。以后给该用户 Push 消息时,就可以用此别名来指定。 为安装了应用程序的用户,取个别名来标识。以后给该用户 Push 消息时,就可以用此别名来指定。
@@ -148,7 +149,7 @@ RegistrationID 定义
举例:在一个用户要登录的游戏中,可能设置别名为 userid。游戏运营时,发现该用户 3 天没有玩游戏了,则根据 userid 调用服务器端 API 发通知到客户端提醒用户。 举例:在一个用户要登录的游戏中,可能设置别名为 userid。游戏运营时,发现该用户 3 天没有玩游戏了,则根据 userid 调用服务器端 API 发通知到客户端提醒用户。
标签 tag **标签 Tag**
为安装了应用程序的用户,打上标签。其目的主要是方便开发者根据标签,来批量下发 Push 消息。 为安装了应用程序的用户,打上标签。其目的主要是方便开发者根据标签,来批量下发 Push 消息。
@@ -164,10 +165,6 @@ RegistrationID 定义
JPushPlugin.prototype.setTags = function(tags) JPushPlugin.prototype.setTags = function(tags)
JPushPlugin.prototype.setAlias = function(alias) JPushPlugin.prototype.setAlias = function(alias)
####使用平台
android iOS
#### 参数说明 #### 参数说明
* tags * tags
* 参数类型为数组 * 参数类型为数组
@@ -176,7 +173,7 @@ android iOS
* 每次调用至少设置一个 tag,覆盖之前的设置,不是新增 * 每次调用至少设置一个 tag,覆盖之前的设置,不是新增
* 有效的标签组成:字母(区分大小写)、数字、下划线、汉字 * 有效的标签组成:字母(区分大小写)、数字、下划线、汉字
* 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 100 个 tag,但总长度不得超过1K字节。(判断长度需采用UTF-8编码) * 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 100 个 tag,但总长度不得超过1K字节。(判断长度需采用UTF-8编码)
* 单个设备最多支持设置 100 个 tagApp 全局 tag 数量无限制。 * 单个设备最多支持设置 100 个 tagApp 全局 tag 数量无限制。
* alias * alias
* 参数类型为字符串 * 参数类型为字符串
* nil 此次调用不设置此值 * nil 此次调用不设置此值
@@ -196,8 +193,7 @@ android iOS
result += "tags:" + event.tags + " "; result += "tags:" + event.tags + " ";
result += "alias:" + event.alias + " "; result += "alias:" + event.alias + " ";
$("#tagAliasResult").html(result); $("#tagAliasResult").html(result);
} } catch(exception) {
catch(exception){
console.log(exception) console.log(exception)
} }
} }
@@ -208,17 +204,18 @@ android iOS
|Code|描述 |详细解释 | |Code|描述 |详细解释 |
|-|-|-| |----|:----------------------------------------|:--------|
|6001|无效的设置,tag/alias 不应参数都为 null | | |6001|无效的设置,tag/alias 不应参数都为 null | |
|6002|设置超时 |建议重试| |6002|设置超时 |建议重试|
|6003| alias| 字符串不合法 有效的别名、标签组成:字母(区分大小写)、数字、下划线、汉字。| |6003|alias 字符串不合法 |有效的别名、标签组成:字母(区分大小写)、数字、下划线、汉字。|
|6004| alias超长。最多 40个字节 中文 UTF-8 是 3 个字节| |6004|alias超长。 |最多 40个字节 中文 UTF-8 是 3 个字节|
|6005|某一个 tag 字符串不合法 |有效的别名、标签组成:字母(区分大小写)、数字、下划线、汉字。| |6005|某一个 tag 字符串不合法 |有效的别名、标签组成:字母(区分大小写)、数字、下划线、汉字。|
|6006| 某一个 tag 超长|一个 tag 最多 40个字节 中文 UTF-8 是 3 个字节| |6006|某一个 tag 超长 |一个 tag 最多 40个字节 中文 UTF-8 是 3 个字节|
|6007|tags 数量超出限制。最多 100个 |这是一台设备的限制。一个应用全局的标签数量无限制。| |6007|tags 数量超出限制。最多 100个 |这是一台设备的限制。一个应用全局的标签数量无限制。|
|6008| tag/alias 超出总长度限制|总长度最多 1K 字节| |6008|tag/alias 超出总长度限制 |总长度最多 1K 字节|
|6011|10s内设置tag或alias大于3次 |短时间内操作过于频繁| |6011|10s内设置tag或alias大于3次 |短时间内操作过于频繁|
### 获取点击通知内容 ### 获取点击通知内容
#### event - jpush.openNotification #### event - jpush.openNotification
@@ -234,7 +231,7 @@ android iOS
- onOpenNotification需要这样写: - onOpenNotification需要这样写:
var alertContent var alertContent;
if(device.platform == "Android"){ if(device.platform == "Android"){
alertContent = window.plugins.jPushPlugin.openNotification.alert; alertContent = window.plugins.jPushPlugin.openNotification.alert;
}else{ }else{
@@ -244,7 +241,7 @@ android iOS
ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.openNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意 ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.openNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意
+ android + Android
{"alert":"ding", {"alert":"ding",
"extras":{ "extras":{
@@ -264,6 +261,8 @@ ps:点击通知后传递的json object 保存在window.plugins.jPushPlugin.ope
"sound":"default", "sound":"default",
"alert":"今天去哪儿" "alert":"今天去哪儿"
}, },
"key1":"value1",
"key2":"value2",
"_j_msgid":154604475 "_j_msgid":154604475
} }
@@ -282,7 +281,7 @@ ps:点击通知后传递的json object 保存在window.plugins.jPushPlugin.ope
- onReceiveNotification 需要这样写: - onReceiveNotification 需要这样写:
var alertContent var alertContent;
if(device.platform == "Android"){ if(device.platform == "Android"){
alertContent = window.plugins.jPushPlugin.receiveNotification.alert; alertContent = window.plugins.jPushPlugin.receiveNotification.alert;
}else{ }else{
@@ -292,7 +291,7 @@ ps:点击通知后传递的json object 保存在window.plugins.jPushPlugin.ope
ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意 ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意
+ android + Android
{"alert":"ding", {"alert":"ding",
"extras":{ "extras":{
@@ -312,6 +311,8 @@ ps:点击通知后传递的json object 保存在window.plugins.jPushPlugin.rec
"sound":"default", "sound":"default",
"alert":"今天去哪儿" "alert":"今天去哪儿"
}, },
"key1":"value1",
"key2":"value2",
"_j_msgid":154604475 "_j_msgid":154604475
} }
@@ -353,7 +354,7 @@ ps:点击通知后传递的json object 保存在window.plugins.jPushPlugin.rec
ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveMessage,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意 ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveMessage,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意
+ android + Android
{"message":"今天去哪儿", {"message":"今天去哪儿",
"extras"{ "extras"{
@@ -371,5 +372,3 @@ ps:点击通知后传递的json object 保存在window.plugins.jPushPlugin.rec
"key":"不填写没有" "key":"不填写没有"
} }
} }
+2 -1
View File
@@ -35,6 +35,7 @@
window.plugins.jPushPlugin.prototype.beginLogPageView = function(pageName, duration) window.plugins.jPushPlugin.prototype.beginLogPageView = function(pageName, duration)
#####参数说明 #####参数说明
pageName 需要统计页面自定义名称 pageName 需要统计页面自定义名称
duration 自定义的页面时间 duration 自定义的页面时间
#####调用说明 #####调用说明
应在所有的需要统计得页面得 viewWillAppear 和 viewWillDisappear 加入 startLogPageView 和 stopLogPageView 来统计当前页面的停留时间。 应在所有的需要统计得页面得 viewWillAppear 和 viewWillDisappear 加入 startLogPageView 和 stopLogPageView 来统计当前页面的停留时间。
@@ -222,7 +223,7 @@ window.plugins.jPushPlugin.setLocation(39.26,115.25);
### 设备平台判断 ### 设备平台判断
#### API - isPlatformIOS #### API - isPlatformIOS
API 用于区分iOSAndroid平台,以便不同设置 API 用于区分 iOS, Android 平台,以便不同设置
##### 接口定义 ##### 接口定义
+3 -3
View File
@@ -1,12 +1,12 @@
### IOS手工安装 ### iOS手工安装
下载jpush phonegap插件,并解压缩,标记插件目录为:`$JPUSH_PLUGIN_DIR` 下载 JPush PhoneGap 插件,并解压缩,标记插件目录为:`$JPUSH_PLUGIN_DIR`
1. 用 xcode 打开 iOS 工程 将 `$JPUSH_PLUGIN_DIR`/src/ios/Plugins/ 拖到 project 中 1. 用 xcode 打开 iOS 工程 将 `$JPUSH_PLUGIN_DIR`/src/ios/Plugins/ 拖到 project 中
2.`$JPUSH_PLUGIN_DIR`/src/ios/lib/ 拖到 project 中 2.`$JPUSH_PLUGIN_DIR`/src/ios/lib/ 拖到 project 中
4. 添加以下框架,打开xocode,点击project,选择(Target -> Build Phases -> Link Binary With Libraries) 4. 添加以下框架,打开 xcode,点击 project,选择(Target -> Build Phases -> Link Binary With Libraries)
CFNetwork.framework CFNetwork.framework
CoreFoundation.framework CoreFoundation.framework
-1
View File
@@ -95,7 +95,6 @@
}; };
var initiateUI = function () { var initiateUI = function () {
try { try {
window.plugins.jPushPlugin.init(); window.plugins.jPushPlugin.init();
getRegistrationID(); getRegistrationID();
+35
View File
@@ -0,0 +1,35 @@
{
"name": "jpush-phonegap-plugin",
"version": "2.1.1",
"description": "JPush for cordova plugin",
"cordova": {
"id": "cn.jpush.phonegap.JPushPlugin",
"platforms": [
"ios",
"android"
]
},
"repository": {
"type": "git",
"url": "git+https://github.com/jpush/jpush-phonegap-plugin.git"
},
"keywords": [
"JPush",
"push",
"ecosystem:cordova",
"cordova-ios",
"cordova-android"
],
"engines": [
{
"name": "cordova",
"version": ">=3.0"
}
],
"author": "jpush",
"license": "Apache 2.0 License",
"bugs": {
"url": "https://github.com/jpush/jpush-phonegap-plugin/issues"
},
"homepage": "https://github.com/jpush/jpush-phonegap-plugin#readme"
}
+3 -3
View File
@@ -68,7 +68,7 @@ public class JPushPlugin extends CordovaPlugin {
private static String TAG = "JPushPlugin"; private static String TAG = "JPushPlugin";
private static boolean shouldCacheMsg = false; private static boolean shouldCacheMsg = false;
private static boolean isStatisticsOpened = true; // 是否开启统计分析功能 private static boolean isStatisticsOpened = false; // 是否开启统计分析功能
public static String notificationAlert; public static String notificationAlert;
public static Map<String, Object> notificationExtras = new HashMap<String, Object>(); public static Map<String, Object> notificationExtras = new HashMap<String, Object>();
@@ -106,7 +106,7 @@ public class JPushPlugin extends CordovaPlugin {
public void onPause(boolean multitasking) { public void onPause(boolean multitasking) {
Log.i(TAG, "---------------- onPause"); Log.i(TAG, "---------------- onPause");
shouldCacheMsg = true; shouldCacheMsg = true;
if (isStatisticsOpened) { if (isStatisticsOpened && multitasking) {
JPushInterface.onPause(cordovaActivity); JPushInterface.onPause(cordovaActivity);
} }
} }
@@ -116,7 +116,7 @@ public class JPushPlugin extends CordovaPlugin {
Log.i(TAG, "---------------- onResume" + "-" Log.i(TAG, "---------------- onResume" + "-"
+ JPushPlugin.openNotificationAlert + "-" + JPushPlugin.openNotificationAlert + "-"
+ JPushPlugin.notificationAlert); + JPushPlugin.notificationAlert);
if (isStatisticsOpened) { if (isStatisticsOpened && multitasking) {
JPushInterface.onResume(cordovaActivity); JPushInterface.onResume(cordovaActivity);
} }
if (JPushPlugin.openNotificationAlert != null) { if (JPushPlugin.openNotificationAlert != null) {
+10 -20
View File
@@ -9,30 +9,20 @@
#import "AppDelegate+JPush.h" #import "AppDelegate+JPush.h"
#import "JPushPlugin.h" #import "JPushPlugin.h"
#import "JPUSHService.h" #import "JPUSHService.h"
#import <objc/runtime.h>
@implementation AppDelegate (JPush) @implementation AppDelegate (JPush)
+(void)load{ -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
Method origin; [JPushPlugin setLaunchOptions:launchOptions];
Method swizzle;
origin=class_getInstanceMethod([self class],@selector(init));
swizzle=class_getInstanceMethod([self class], @selector(init_plus));
method_exchangeImplementations(origin, swizzle);
}
-(instancetype)init_plus{ //cordova didFinishLaunchingWithOptions
[[NSNotificationCenter defaultCenter] addObserver:self CGRect screenBounds = [[UIScreen mainScreen] bounds];
selector:@selector(applicationDidLaunch:) self.window = [[UIWindow alloc] initWithFrame:screenBounds];
name:@"UIApplicationDidFinishLaunchingNotification" self.viewController = [[CDVViewController alloc] init];
object:nil]; self.window.rootViewController = self.viewController;
return [self init_plus]; self.window.autoresizesSubviews = YES;
} [self.window makeKeyAndVisible];
return YES;
-(void)applicationDidLaunch:(NSNotification*)notification{
if (notification) {
[JPushPlugin setLaunchOptions:notification.userInfo];
}
} }
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
-1
View File
@@ -253,7 +253,6 @@ JPushPlugin.prototype.setDebugMode = function(mode) {
} }
} }
//setDebugMode
JPushPlugin.prototype.clearAllNotification = function() { JPushPlugin.prototype.clearAllNotification = function() {
if(device.platform == "Android") { if(device.platform == "Android") {
data = []; data = [];