Compare commits

...

10 Commits

Author SHA1 Message Date
hevin 13b36b746c Merge branch 'dev' 2017-05-31 17:37:08 +08:00
hevin b234861e44 Fix package name 2017-05-31 17:34:53 +08:00
hevin 2287ef10dd Optimize ios native methods
- setTags
- setAlias
- setTagsWithAlias
2017-05-26 20:46:21 +08:00
Hevin 2a05ea1784 Merge branch 'master' into dev 2017-05-26 16:18:08 +08:00
Hevin 9d3d32d725 Optimize API
- setTags
- setAlias
- setTagsAndAlias
2017-05-26 16:17:54 +08:00
hevin 3c88e87b17 Merge branch 'dev' 2017-05-24 14:46:02 +08:00
hevin b3b2af1520 Change package name 2017-05-24 14:43:22 +08:00
hevin 6e8b5931fb Update package name & npm version 2017-05-24 11:20:52 +08:00
hevin 23ed4817a4 Update .gitignore 2017-05-16 22:15:59 +08:00
Hevin 9a1da318cc Merge remote-tracking branch 'refs/remotes/origin/master' into dev 2017-05-15 16:15:00 +08:00
10 changed files with 170 additions and 92 deletions
+39 -1
View File
@@ -1 +1,39 @@
.DS_Store # Created by https://www.gitignore.io/api/macos,apachecordova
### ApacheCordova ###
# Apache Cordova generated files and directories
bin/*
!/plugins
!/plugins/android.json
!/plugins/fetch.json
plugins/*
platforms/*
### macOS ###
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# End of https://www.gitignore.io/api/macos,apachecordova
+1 -1
View File
@@ -2,7 +2,7 @@
[![Build Status](https://travis-ci.org/jpush/jpush-phonegap-plugin.svg?branch=master)](https://travis-ci.org/jpush/jpush-phonegap-plugin) [![Build Status](https://travis-ci.org/jpush/jpush-phonegap-plugin.svg?branch=master)](https://travis-ci.org/jpush/jpush-phonegap-plugin)
[![QQ Group](https://img.shields.io/badge/QQ%20Group-413602425-red.svg)]() [![QQ Group](https://img.shields.io/badge/QQ%20Group-413602425-red.svg)]()
[![release](https://img.shields.io/badge/release-3.1.6-blue.svg)](https://github.com/jpush/jpush-phonegap-plugin/releases) [![release](https://img.shields.io/badge/release-3.1.7-blue.svg)](https://github.com/jpush/jpush-phonegap-plugin/releases)
[![platforms](https://img.shields.io/badge/platforms-iOS%7CAndroid-lightgrey.svg)](https://github.com/jpush/jpush-phonegap-plugin) [![platforms](https://img.shields.io/badge/platforms-iOS%7CAndroid-lightgrey.svg)](https://github.com/jpush/jpush-phonegap-plugin)
[![weibo](https://img.shields.io/badge/weibo-JPush-blue.svg)](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1) [![weibo](https://img.shields.io/badge/weibo-JPush-blue.svg)](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
+13 -13
View File
@@ -161,9 +161,11 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
#### 接口定义 #### 接口定义
JPushPlugin.prototype.setTagsWithAlias(tags, alias) ```js
JPushPlugin.prototype.setTags(tags) JPushPlugin.prototype.setTagsWithAlias(tags, alias, successCallback, errorCallback)
JPushPlugin.prototype.setAlias(alias) JPushPlugin.prototype.setTags(tags, successCallback, errorCallback)
JPushPlugin.prototype.setAlias(alias, successCallback, errorCallback)
```
#### 参数说明 #### 参数说明
* tags: * tags:
@@ -181,17 +183,15 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。 * 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
* 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。 * 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
#### 返回值说明 #### 代码示例
函数本身无返回值,但需要注册 `jpush.setTagsWithAlias` 事件来监听设置结果: ```js
window.plugins.jPushPlugin.setTagsWithAlias([tag1, tag2], alias1, function () {
document.addEventListener("jpush.setTagsWithAlias", function(event) { // success callback.
console.log("onTagsWithAlias") }, function (errorMsg) {
var result = "result code:" + event.resultCode + " " // errorMsg 格式为 'errorCode: error message'.
result += "tags:" + event.tags + " " })
result += "alias:" + event.alias + " " ```
$("#tagAliasResult").html(result)
}, false)
#### 错误码定义 #### 错误码定义
+4 -1
View File
@@ -116,7 +116,10 @@
if (tag3 != "") { if (tag3 != "") {
tags.push(tag3); tags.push(tag3);
} }
window.plugins.jPushPlugin.setTagsWithAlias(tags, alias); window.plugins.jPushPlugin.setTagsWithAlias(tags, alias, function () {
// Success callback
console.log(tags + ' - ' + alias)
});
} catch (exception) { } catch (exception) {
console.log(exception); console.log(exception);
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "jpush-phonegap-plugin", "name": "jpush-phonegap-plugin",
"version": "3.1.6", "version": "3.1.7",
"description": "JPush for cordova plugin", "description": "JPush for cordova plugin",
"cordova": { "cordova": {
"id": "jpush-phonegap-plugin", "id": "jpush-phonegap-plugin",
+15 -9
View File
@@ -2,7 +2,7 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
id="jpush-phonegap-plugin" id="jpush-phonegap-plugin"
version="3.1.6"> version="3.1.7">
<name>JPush</name> <name>JPush</name>
<description>JPush for cordova plugin</description> <description>JPush for cordova plugin</description>
@@ -62,7 +62,7 @@
<platform name="android"> <platform name="android">
<config-file target="res/xml/config.xml" parent="/*"> <config-file target="res/xml/config.xml" parent="/*">
<feature name="JPushPlugin"> <feature name="JPushPlugin">
<param name="android-package" value="cn.jpush.phonegap.JPushPlugin" /> <param name="android-package" value="cn.jiguang.cordova.push.JPushPlugin" />
</feature> </feature>
</config-file> </config-file>
@@ -154,7 +154,9 @@
</service> </service>
<!-- User defined. For test only 用户自定义的广播接收器 --> <!-- User defined. For test only 用户自定义的广播接收器 -->
<receiver android:name="cn.jpush.phonegap.MyReceiver" android:enabled="true"> <receiver
android:name="cn.jiguang.cordova.push.MyReceiver"
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 显示通知栏 -->
@@ -188,14 +190,18 @@
<source-file src="src/android/libs/jpush-android_v3.0.6.jar" target-dir="libs" /> <source-file src="src/android/libs/jpush-android_v3.0.6.jar" target-dir="libs" />
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap" /> <source-file src="src/android/MyReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap" /> <source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jiguang/cordova/push" />
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml" target-dir="res/drawable" /> <source-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml"
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml" target-dir="res/drawable" /> target-dir="res/drawable" />
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml"
target-dir="res/drawable" />
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png" target-dir="res/drawable-hdpi" /> <source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png"
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png" target-dir="res/drawable-hdpi" /> target-dir="res/drawable-hdpi" />
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png"
target-dir="res/drawable-hdpi" />
<source-file src="src/android/res/layout/jpush_popwin_layout.xml" target-dir="res/layout" /> <source-file src="src/android/res/layout/jpush_popwin_layout.xml" target-dir="res/layout" />
<source-file src="src/android/res/layout/jpush_webview_layout.xml" target-dir="res/layout" /> <source-file src="src/android/res/layout/jpush_webview_layout.xml" target-dir="res/layout" />
+1 -1
View File
@@ -1,4 +1,4 @@
package cn.jpush.phonegap; package cn.jiguang.cordova.push;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
+1 -1
View File
@@ -1,4 +1,4 @@
package cn.jpush.phonegap; package cn.jiguang.cordova.push;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
+43 -15
View File
@@ -99,24 +99,45 @@
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{ -(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{
NSString *alias = [command argumentAtIndex:0]; NSString *alias = [command argumentAtIndex:0];
NSArray *tags = [command argumentAtIndex:1]; NSArray *tags = [command argumentAtIndex:1];
[JPUSHService setTags:[NSSet setWithArray:tags] [JPUSHService setTags:[NSSet setWithArray:tags]
alias:alias alias:alias
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:) fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
object:self]; CDVPluginResult *result;
if (iResCode == 0) {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
} else {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
}
}];
} }
-(void)setTags:(CDVInvokedUrlCommand*)command{ -(void)setTags:(CDVInvokedUrlCommand*)command{
NSArray *tags = command.arguments; NSArray *tags = command.arguments;
[JPUSHService setTags:[NSSet setWithArray:tags] [JPUSHService setTags:[NSSet setWithArray:tags]
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:) alias:nil
object:self]; fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
CDVPluginResult *result;
if (iResCode == 0) {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
} else {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
}
}];
} }
-(void)setAlias:(CDVInvokedUrlCommand*)command{ -(void)setAlias:(CDVInvokedUrlCommand*)command{
NSString *alias = [command argumentAtIndex:0]; NSString *alias = [command argumentAtIndex:0];
[JPUSHService setAlias:alias [JPUSHService setTags:nil
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:) alias:alias
object:self]; fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
CDVPluginResult *result;
if (iResCode == 0) {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
} else {
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
}
}];
} }
-(void)getRegistrationID:(CDVInvokedUrlCommand*)command{ -(void)getRegistrationID:(CDVInvokedUrlCommand*)command{
@@ -259,9 +280,15 @@
} }
UNNotificationCategory *category; UNNotificationCategory *category;
if (dimiss) { if (dimiss) {
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction]; category = [UNNotificationCategory categoryWithIdentifier:categoryId
actions:actions
intentIdentifiers:@[]
options:UNNotificationCategoryOptionCustomDismissAction];
} else { } else {
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionNone]; category = [UNNotificationCategory categoryWithIdentifier:categoryId
actions:actions
intentIdentifiers:@[]
options:UNNotificationCategoryOptionNone];
} }
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]]; [[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]];
} }
@@ -318,16 +345,17 @@
#pragma mark 设置标签及别名回调 #pragma mark 设置标签及别名回调
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias { -(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias {
NSDictionary *dict = @{@"resultCode":[NSNumber numberWithInt:resultCode], if (resultCode == 0) { // Success
@"tags" :tags == nil ? [NSNull null] : [tags allObjects],
@"alias" :alias == nil ? [NSNull null] : alias } else {
};
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_SetTagsWithAlias jsString:[dict toJsonString]]; }
} }
- (void)networkDidReceiveMessage:(NSNotification *)notification { - (void)networkDidReceiveMessage:(NSNotification *)notification {
if (notification && notification.userInfo) { if (notification && notification.userInfo) {
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage jsString:[notification.userInfo toJsonString]]; [JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage
jsString:[notification.userInfo toJsonString]];
} }
} }
+27 -24
View File
@@ -7,20 +7,23 @@ JPushPlugin.prototype.openNotification = {}
JPushPlugin.prototype.receiveNotification = {} JPushPlugin.prototype.receiveNotification = {}
JPushPlugin.prototype.isPlatformIOS = function () { JPushPlugin.prototype.isPlatformIOS = function () {
var isPlatformIOS = (device.platform == 'iPhone' || return (device.platform === 'iPhone' ||
device.platform == 'iPad' || device.platform === 'iPad' ||
device.platform == 'iPod touch' || device.platform === 'iPod touch' ||
device.platform == 'iOS') device.platform === 'iOS')
return isPlatformIOS
} }
JPushPlugin.prototype.errorCallback = function (msg) { JPushPlugin.prototype.errorCallback = function (msg) {
console.log('Javascript Callback Error: ' + msg) console.log('JPush Callback Error: ' + msg)
} }
JPushPlugin.prototype.callNative = function (name, args, successCallback) { JPushPlugin.prototype.callNative = function (name, args, successCallback, errorCallback) {
if (errorCallback) {
cordova.exec(successCallback, errorCallback, 'JPushPlugin', name, args)
} else {
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args) cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
} }
}
// Common methods // Common methods
JPushPlugin.prototype.init = function () { JPushPlugin.prototype.init = function () {
@@ -67,7 +70,7 @@ JPushPlugin.prototype.clearLocalNotifications = function () {
} }
} }
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) { JPushPlugin.prototype.setTagsWithAlias = function (tags, alias, successCallback, errorCallback) {
if (tags == null) { if (tags == null) {
this.setAlias(alias) this.setAlias(alias)
return return
@@ -78,15 +81,15 @@ JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
} }
var arrayTagWithAlias = [tags] var arrayTagWithAlias = [tags]
arrayTagWithAlias.unshift(alias) arrayTagWithAlias.unshift(alias)
this.callNative('setTagsWithAlias', arrayTagWithAlias, null) this.callNative('setTagsWithAlias', arrayTagWithAlias, successCallback, errorCallback)
} }
JPushPlugin.prototype.setTags = function (tags) { JPushPlugin.prototype.setTags = function (tags, successCallback, errorCallback) {
this.callNative('setTags', tags, null) this.callNative('setTags', tags, successCallback, errorCallback)
} }
JPushPlugin.prototype.setAlias = function (alias) { JPushPlugin.prototype.setAlias = function (alias, successCallback, errorCallback) {
this.callNative('setAlias', [alias], null) this.callNative('setAlias', [alias], successCallback, errorCallback)
} }
// 判断系统设置中是否对本应用启用通知。 // 判断系统设置中是否对本应用启用通知。
@@ -96,11 +99,11 @@ JPushPlugin.prototype.setAlias = function (alias) {
// UIRemoteNotificationTypeSound = 1 << 1, // UIRemoteNotificationTypeSound = 1 << 1,
// UIRemoteNotificationTypeAlert = 1 << 2, // UIRemoteNotificationTypeAlert = 1 << 2,
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3, // UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
// Android: 返回值 1 代表通知启用0: 通知关闭。 // Android: 返回值 1 代表通知启用0: 通知关闭。
JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) { JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('getUserNotificationSettings', [], successCallback) this.callNative('getUserNotificationSettings', [], successCallback)
} else if (device.platform == 'Android') { } else if (device.platform === 'Android') {
this.callNative('areNotificationEnabled', [], successCallback) this.callNative('areNotificationEnabled', [], successCallback)
} }
} }
@@ -206,13 +209,13 @@ JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
// Android methods // Android methods
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () { JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('setBasicPushNotificationBuilder', [], null) this.callNative('setBasicPushNotificationBuilder', [], null)
} }
} }
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () { JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('setCustomPushNotificationBuilder', [], null) this.callNative('setCustomPushNotificationBuilder', [], null)
} }
} }
@@ -221,7 +224,7 @@ JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function (data) {
if (device.platform === 'Android') { if (device.platform === 'Android') {
data = JSON.stringify(data) data = JSON.stringify(data)
var event = JSON.parse(data) var event = JSON.parse(data)
cordova.fireDocumentEvent('jpush.receiveRegistrationId', event); cordova.fireDocumentEvent('jpush.receiveRegistrationId', event)
} }
} }
@@ -259,14 +262,14 @@ JPushPlugin.prototype.clearNotificationById = function (id) {
} }
JPushPlugin.prototype.setLatestNotificationNum = function (num) { JPushPlugin.prototype.setLatestNotificationNum = function (num) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('setLatestNotificationNum', [num], null) this.callNative('setLatestNotificationNum', [num], null)
} }
} }
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title, JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
notificationID, broadcastTime, extras) { notificationID, broadcastTime, extras) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('addLocalNotification', this.callNative('addLocalNotification',
[builderId, content, title, notificationID, broadcastTime, extras], null) [builderId, content, title, notificationID, broadcastTime, extras], null)
} }
@@ -289,7 +292,7 @@ JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
*在 Portal 上展示给开发者。 *在 Portal 上展示给开发者。
*/ */
JPushPlugin.prototype.setStatisticsOpen = function (mode) { JPushPlugin.prototype.setStatisticsOpen = function (mode) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('setStatisticsOpen', [mode], null) this.callNative('setStatisticsOpen', [mode], null)
} }
} }
@@ -299,19 +302,19 @@ JPushPlugin.prototype.setStatisticsOpen = function (mode) {
* 具体可看:http://docs.jpush.io/client/android_api/#android-60 * 具体可看:http://docs.jpush.io/client/android_api/#android-60
*/ */
JPushPlugin.prototype.requestPermission = function () { JPushPlugin.prototype.requestPermission = function () {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('requestPermission', [], null) this.callNative('requestPermission', [], null)
} }
} }
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) { JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null) this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null)
} }
} }
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) { JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.callNative('setPushTime', [weekdays, startHour, endHour], null) this.callNative('setPushTime', [weekdays, startHour, endHour], null)
} }
} }