Compare commits

...

19 Commits

Author SHA1 Message Date
pikacode 2463368cc1 Merge branch 'dev' 2017-03-01 16:56:14 +08:00
pikacode 7279fdd0ce update README 2017-03-01 16:55:27 +08:00
pikacode 75cb7dfe97 Merge branch 'dev' 2017-03-01 16:53:49 +08:00
pikacode 3b25b73adf iOS 分离 JCore 2017-03-01 16:53:05 +08:00
Hevin 2b2189f6cb Android 分离 jcore 2017-03-01 16:43:00 +08:00
pikacode a48915f115 Merge branch 'dev' 2017-03-01 16:18:26 +08:00
pikacode 1fe6d0da8c iOS - update
1.更新 SDK 3.0.2
2017-02-20 13:25:41 +08:00
Hevin Lau 42790c71f3 统一 API,规范代码格式
- setDebugMode
- clearLocalNotifications
2017-01-17 22:59:13 +08:00
pikacode 7d868be664 Merge branch 'dev' 2017-01-17 16:57:25 +08:00
pikacode 7b65a1f469 iOS update SDK
1.JPush 3.0.1,JCore 1.1.0
2017-01-17 14:45:17 +08:00
pikacode 20d93c0047 iOS - update 2017-01-17 14:45:16 +08:00
Hevin Lau b1a77669a2 Merge branch 'dev' 2017-01-09 10:37:49 +08:00
Hevin Lau 1cf537dacb Update android sdk to 3.0.1 2017-01-08 18:07:06 +08:00
pikacode 575fe40faf iOS - update
1.修改文件名
2016-12-30 12:32:47 +08:00
pikacode 6734bf9160 iOS - fix #194 2016-12-30 12:29:43 +08:00
pikacode fbfe621aa3 Merge branch 'dev' 2016-12-22 16:38:01 +08:00
pikacode df6adddc75 iOS - fix #196 2016-12-19 15:24:04 +08:00
Hevin Lau 974838d5de Merge branch 'dev' 2016-12-18 20:29:40 +08:00
Hevin Lau 727af516e8 Update version number. 2016-12-18 20:26:07 +08:00
23 changed files with 234 additions and 208 deletions
+17 -5
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.0.1-blue.svg)](https://github.com/jpush/jpush-phonegap-plugin/releases) [![release](https://img.shields.io/badge/release-3.1.0-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)
@@ -17,15 +17,15 @@
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+ - 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+
cordova plugin add jpush-phonegap-plugin --variable API_KEY=your_jpush_appkey cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
- 或直接通过 url 安装: - 或直接通过 url 安装:
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 APP_KEY=your_jpush_appkey
- 或下载到本地安装: - 或下载到本地安装:
cordova plugin add Your_Plugin_Path --variable API_KEY=your_jpush_appkey cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
## Usage ## Usage
@@ -62,10 +62,22 @@ Android 的推送通过长连接的方式实现,只有在连接保持的情况
或者自己实现应用保活,网上有很多相关文章(不推荐)。 或者自己实现应用保活,网上有很多相关文章(不推荐)。
> 为什么 QQ、微信之类的应用退出后还能够收到通知?因为这些大厂应用,手机厂商默认都会加入自启动白名单中,也不会在应用退出后杀死它们的相关服务。 > 为什么 QQ、微信之类的应用退出后还能够收到通知?因为这些大厂应用,手机厂商默认都会加入自启动白名单中,也不会在应用退出后杀死它们的相关服务。
如果你多加留意,就会发现非大厂的应用如果你一段时间不用都是收不到推送的。 > 如果你多加留意,就会发现非大厂的应用如果你一段时间不用都是收不到推送的。
### iOS ### iOS
#### 打包时遇到 i386 打包失败怎么办?
```
cordova platform update ios
```
#### ionic 2 如何调用 API
[issue 179](https://github.com/jpush/jpush-phonegap-plugin/issues/179)
#### PushConfig.plist 文件中的字段都是什么意思? #### PushConfig.plist 文件中的字段都是什么意思?
- Appkey:应用标识。 - Appkey:应用标识。
- Channel:渠道标识。 - Channel:渠道标识。
- IsProduction:是否生产环境。 - IsProduction:是否生产环境。
+5 -6
View File
@@ -3,7 +3,7 @@
- [接收通知时获得通知的内容](#接收通知时获得通知的内容) - [接收通知时获得通知的内容](#接收通知时获得通知的内容)
- [打开通知时获得通知的内容](#打开通知时获得通知的内容) - [打开通知时获得通知的内容](#打开通知时获得通知的内容)
- [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容) - [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容)
- [获取集成日志](#获取集成日志) - [获取集成日志(适用于 iOS](#获取集成日志(适用于 iOS)
- [接收消息和点击通知事件](#接收消息和点击通知事件) - [接收消息和点击通知事件](#接收消息和点击通知事件)
- [统计分析](#统计分析) - [统计分析](#统计分析)
- [清除通知](#清除通知) - [清除通知](#清除通知)
@@ -39,7 +39,7 @@
- 附加字段: - 附加字段:
window.plugins.jPushPlugin.receiveMessage.extras.yourKey window.plugins.jPushPlugin.receiveMessage.extras.yourKey
## 获取集成日志 ## 获取集成日志(适用于 iOS
### API - setDebugMode ### API - setDebugMode
@@ -250,21 +250,20 @@ JPush SDK 提供了 2 个用于定制通知栏样式的构建类:
## 本地通知 ## 本地通知
### API - addLocalNotification, removeLocalNotification, clearLocalNotifications ### API - addLocalNotification, removeLocalNotification, clearLocalNotifications
本地通知 API 不依赖于网络,无网条件下依旧可以触发。 本地通知 API 不依赖于网络,无网条件下依旧可以触发。
本地通知与网络推送的通知是相互独立的,不受保留最近通知条数上限的限制。 本地通知与网络推送的通知是相互独立的,不受保留最近通知条数上限的限制。
本地通知的定时时间是自发送时算起的,不受中间关机等操作的影响。 本地通知的定时时间是自发送时算起的,不受中间关机等操作的影响。
三个接口的功能分别为:添加一个本地通知,除一个本地通知,除所有的本地通知。 三个接口的功能分别为:添加一个本地通知,除一个本地通知,除所有的本地通知。
#####接口定义 #### 接口定义
window.plugins.jPushPlugin.addLocalNotification(builderId, content, title, window.plugins.jPushPlugin.addLocalNotification(builderId, content, title,
notificaitonID, broadcastTime, extras) notificaitonID, broadcastTime, extras)
window.plugins.jPushPlugin.removeLocalNotification(notificationID) window.plugins.jPushPlugin.removeLocalNotification(notificationID)
window.plugins.jPushPlugin.clearLocalNotifications() window.plugins.jPushPlugin.clearLocalNotifications() // 同时适用于 iOS
#### 参数说明 #### 参数说明
+16 -4
View File
@@ -1,4 +1,4 @@
# 通用 API 说明 # 通用 API 说明(同时适用于 Android 和 iOS 系统)
- [停止与恢复推送服务](#停止与恢复推送服务) - [停止与恢复推送服务](#停止与恢复推送服务)
- [获取 RegistrationID](#获取-registrationid) - [获取 RegistrationID](#获取-registrationid)
@@ -45,7 +45,6 @@
window.plugins.jPushPlugin.stopPush() window.plugins.jPushPlugin.stopPush()
### API - resumePush ### API - resumePush
恢复推送服务。调用了此 API 后: 恢复推送服务。调用了此 API 后:
@@ -72,7 +71,6 @@
+ 平台检查推送服务是否注册。 + 平台检查推送服务是否注册。
#### 接口定义 #### 接口定义
window.plugins.jPushPlugin.isPushStopped(callback) window.plugins.jPushPlugin.isPushStopped(callback)
@@ -91,6 +89,20 @@
} }
}) })
## 开启 Debug 模式
### API - setDebugMode
用于开启 Debug 模式,显示更多的日志信息。
#### 接口定义
JPushPlugin.prototype.setDebugMode(isOpen)
#### 参数说明
- isOpen: true,开启 Debug 模式;false,关闭 Debug 模式,不显示错误信息之外的日志信息。
#### 代码示例
window.plugins.jPushPlugin.setDebugMode(true)
## 获取 RegistrationID ## 获取 RegistrationID
@@ -266,7 +278,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
} }
alert("open Notificaiton:" + alertContent) alert("open Notificaiton:" + alertContent)
}, false) }, false)
> ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意。 > ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意。
+3 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "jpush-phonegap-plugin", "name": "jpush-phonegap-plugin",
"version": "3.0.2", "version": "3.1.0",
"description": "JPush for cordova plugin", "description": "JPush for cordova plugin",
"cordova": { "cordova": {
"id": "jpush-phonegap-plugin", "id": "jpush-phonegap-plugin",
@@ -28,7 +28,8 @@
} }
], ],
"peerDependencies": { "peerDependencies": {
"cordova-plugin-device": ">=1.0.0" "cordova-plugin-device": ">=1.0.0",
"cordova-plugin-jcore": "1.1.0"
}, },
"author": "JiGuang", "author": "JiGuang",
"license": "MIT", "license": "MIT",
+15 -18
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.0.1"> version="3.1.0">
<name>JPush Plugin</name> <name>JPush Plugin</name>
<description>JPush for cordova plugin</description> <description>JPush for cordova plugin</description>
@@ -10,7 +10,7 @@
<keywords>JPush,push</keywords> <keywords>JPush,push</keywords>
<license>MIT License</license> <license>MIT License</license>
<preference name="API_KEY" /> <preference name="APP_KEY" />
<engines> <engines>
<engine name="cordova" version=">=3.0" /> <engine name="cordova" version=">=3.0" />
@@ -18,6 +18,7 @@
<!-- dependencies --> <!-- dependencies -->
<dependency id="cordova-plugin-device" /> <dependency id="cordova-plugin-device" />
<dependency id="cordova-plugin-jcore" />
<js-module src="www/JPushPlugin.js" name="JPushPlugin"> <js-module src="www/JPushPlugin.js" name="JPushPlugin">
<clobbers target="JPush" /> <clobbers target="JPush" />
@@ -37,9 +38,8 @@
<source-file src="src/ios/Plugins/AppDelegate+JPush.m" /> <source-file src="src/ios/Plugins/AppDelegate+JPush.m" />
<header-file src="src/ios/lib/JPUSHService.h" /> <header-file src="src/ios/lib/JPUSHService.h" />
<source-file src="src/ios/lib/jpush-ios-3.0.0.a" framework="true" /> <source-file src="src/ios/lib/jpush-ios-3.0.2.a" framework="true" />
<source-file src="src/ios/lib/jcore-ios-1.0.0.a" framework="true" /> <resource-file src="src/ios/JPushConfig.plist" />
<resource-file src="src/ios/PushConfig.plist" />
<framework src="CFNetwork.framework" weak="true" /> <framework src="CFNetwork.framework" weak="true" />
<framework src="CoreFoundation.framework" weak="true" /> <framework src="CoreFoundation.framework" weak="true" />
@@ -54,9 +54,8 @@
<framework src="UserNotifications.framework" weak="true" /> <framework src="UserNotifications.framework" weak="true" />
<framework src="libresolv.tbd" weak="true" /> <framework src="libresolv.tbd" weak="true" />
<config-file target="*JPushConfig.plist" parent="Appkey">
<config-file target="*PushConfig.plist" parent="Appkey"> <string>$APP_KEY</string>
<string>$API_KEY</string>
</config-file> </config-file>
</platform> </platform>
@@ -81,8 +80,10 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
</config-file> </config-file>
<config-file target="AndroidManifest.xml" parent="/manifest/application"> <config-file target="AndroidManifest.xml" parent="/manifest/application">
<!-- Required SDK核心功能--> <!-- Required SDK核心功能-->
<activity android:name="cn.jpush.android.ui.PushActivity" <activity android:name="cn.jpush.android.ui.PushActivity"
@@ -140,7 +141,9 @@
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --> <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --> <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
<service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <service android:name="cn.jpush.android.service.DaemonService"
android:enabled="true"
android:exported="true">
<intent-filter> <intent-filter>
<action android:name="cn.jpush.android.intent.DaemonService" /> <action android:name="cn.jpush.android.intent.DaemonService" />
<category android:name="$PACKAGE_NAME" /> <category android:name="$PACKAGE_NAME" />
@@ -173,16 +176,10 @@
<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 android:name="JPUSH_CHANNEL" android:value="developer-default" />
<meta-data android:name="JPUSH_APPKEY" android:value="$API_KEY" /> <meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
</config-file> </config-file>
<source-file src="src/android/libs/jpush-android_v3.0.0.jar" target-dir="libs" /> <source-file src="src/android/libs/jpush-android_v3.0.1.jar" target-dir="libs" />
<source-file src="src/android/libs/jcore-android_v1.0.0.jar" target-dir="libs" />
<source-file src="src/android/libs/armeabi/libjcore100.so" target-dir="libs/armeabi" />
<source-file src="src/android/libs/armeabi-v7a/libjcore100.so" target-dir="libs/armeabi-v7a" />
<source-file src="src/android/libs/arm64-v8a/libjcore100.so" target-dir="libs/arm64-v8a" />
<source-file src="src/android/libs/x86/libjcore100.so" target-dir="libs/x86" />
<source-file src="src/android/libs/x86_64/libjcore100.so" target-dir="libs/x86_64" />
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap" /> <source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap" />
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap" /> <source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap" />
+1 -2
View File
@@ -479,6 +479,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
callbackContext.error("error reading id json"); callbackContext.error("error reading id json");
return;
} }
if (notificationId != -1) { if (notificationId != -1) {
JPushInterface.clearNotificationById(this.cordova.getActivity(), notificationId); JPushInterface.clearNotificationById(this.cordova.getActivity(), notificationId);
@@ -617,7 +618,6 @@ public class JPushPlugin extends CordovaPlugin {
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId); Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
int value = opValue.getInt(Integer.class); int value = opValue.getInt(Integer.class);
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg); Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED; return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {
e.printStackTrace(); e.printStackTrace();
@@ -632,5 +632,4 @@ public class JPushPlugin extends CordovaPlugin {
} }
return true; return true;
} }
} }
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -3,9 +3,9 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>Appkey</key> <key>Appkey</key>
<string>1c29cb5814072b5b1f8ef829</string> <string></string>
<key>Channel</key> <key>Channel</key>
<string>Subscription</string> <string>channel name</string>
<key>IsProduction</key> <key>IsProduction</key>
<false/> <false/>
<key>IsIDFA</key> <key>IsIDFA</key>
+17 -13
View File
@@ -31,15 +31,26 @@
NSDictionary *_launchOptions; NSDictionary *_launchOptions;
-(void)applicationDidLaunch:(NSNotification *)notification{ -(void)applicationDidLaunch:(NSNotification *)notification{
if (notification) { if (notification) {
if (notification.userInfo) { if (notification.userInfo) {
NSDictionary *userInfo1 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; NSDictionary *userInfo1 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo1.count > 0) { if (userInfo1.count > 0) {
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo1 toJsonString]]; [NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) {
if (SharedJPushPlugin) {
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo1 toJsonString]];
[timer invalidate];
}
}];
} }
NSDictionary *userInfo2 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey]; NSDictionary *userInfo2 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (userInfo2.count > 0) { if (userInfo2.count > 0) {
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_StartLocalNotification jsString:[userInfo1 toJsonString]]; [NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) {
if (SharedJPushPlugin) {
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo2 toJsonString]];
[timer invalidate];
}
}];
} }
} }
[JPUSHService setDebugMode]; [JPUSHService setDebugMode];
@@ -91,7 +102,7 @@ NSDictionary *_launchOptions;
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
[JPUSHService handleRemoteNotification:userInfo]; [JPUSHService handleRemoteNotification:userInfo];
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]]; [JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
} }
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
@@ -110,30 +121,23 @@ NSDictionary *_launchOptions;
default: default:
break; break;
} }
[SharedJPushPlugin jpushFireDocumentEvent:eventName jsString:[userInfo toJsonString]]; [JPushPlugin fireDocumentEvent:eventName jsString:[userInfo toJsonString]];
completionHandler(UIBackgroundFetchResultNewData); completionHandler(UIBackgroundFetchResultNewData);
} }
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{ -(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:notification.request.content.userInfo]; NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:notification.request.content.userInfo];
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
if ([SharedJPushPlugin respondsToSelector:@selector(jpushFireDocumentEvent:jsString:)]) {
}
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert); completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
} }
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{ -(void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
if ([SharedJPushPlugin respondsToSelector:@selector(jpushFireDocumentEvent:jsString:)]) {
}
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:response.notification.request.content.userInfo]; NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:response.notification.request.content.userInfo];
@try { @try {
[userInfo setValue:[response valueForKey:@"userText"] forKey:@"userText"]; [userInfo setValue:[response valueForKey:@"userText"] forKey:@"userText"];
} @catch (NSException *exception) { } } @catch (NSException *exception) { }
[userInfo setValue:response.actionIdentifier forKey:@"actionIdentifier"]; [userInfo setValue:response.actionIdentifier forKey:@"actionIdentifier"];
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo toJsonString]]; [JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo toJsonString]];
completionHandler(); completionHandler();
} }
+2 -2
View File
@@ -15,7 +15,7 @@
#define WEAK_SELF(weakSelf) __weak __typeof(&*self)weakSelf = self; #define WEAK_SELF(weakSelf) __weak __typeof(&*self)weakSelf = self;
static NSString *const JPushConfig_FileName = @"PushConfig"; static NSString *const JPushConfig_FileName = @"JPushConfig";
static NSString *const JPushConfig_Appkey = @"Appkey"; static NSString *const JPushConfig_Appkey = @"Appkey";
static NSString *const JPushConfig_Channel = @"Channel"; static NSString *const JPushConfig_Channel = @"Channel";
static NSString *const JPushConfig_IsProduction = @"IsProduction"; static NSString *const JPushConfig_IsProduction = @"IsProduction";
@@ -24,7 +24,7 @@ static NSString *const JPushConfig_Delay = @"Delay";
static NSString *const JPushDocumentEvent_ReceiveNotification = @"receiveNotification"; static NSString *const JPushDocumentEvent_ReceiveNotification = @"receiveNotification";
static NSString *const JPushDocumentEvent_OpenNotification = @"openNotification"; static NSString *const JPushDocumentEvent_OpenNotification = @"openNotification";
static NSString *const JPushDocumentEvent_BackgroundNotification = @"backgroundNotification"; static NSString *const JPushDocumentEvent_BackgroundNotification = @"backgroundNotification";
static NSString *const JPushDocumentEvent_SetTagsWithAlias = @"setTagsWithAlias"; static NSString *const JPushDocumentEvent_SetTagsWithAlias = @"setTagsWithAlias";
static NSString *const JPushDocumentEvent_ReceiveMessage = @"receiveMessage"; static NSString *const JPushDocumentEvent_ReceiveMessage = @"receiveMessage";
static NSString *const JPushDocumentEvent_StartLocalNotification = @"startLocalNotification"; static NSString *const JPushDocumentEvent_StartLocalNotification = @"startLocalNotification";
+1 -1
View File
@@ -75,7 +75,7 @@
# pragma mark - private # pragma mark - private
-(void)jpushFireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString; +(void)fireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString;
+(void)setupJPushSDK:(NSDictionary*)userInfo; +(void)setupJPushSDK:(NSDictionary*)userInfo;
+4 -4
View File
@@ -90,9 +90,9 @@
object:nil]; object:nil];
} }
-(void)jpushFireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString{ +(void)fireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString{
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
[self.commandDelegate evalJs:[NSString stringWithFormat:@"cordova.fireDocumentEvent('jpush.%@',%@)", eventName, jsString]]; [SharedJPushPlugin.commandDelegate evalJs:[NSString stringWithFormat:@"cordova.fireDocumentEvent('jpush.%@',%@)", eventName, jsString]];
}); });
} }
@@ -322,12 +322,12 @@
@"tags" :tags == nil ? [NSNull null] : [tags allObjects], @"tags" :tags == nil ? [NSNull null] : [tags allObjects],
@"alias" :alias == nil ? [NSNull null] : alias @"alias" :alias == nil ? [NSNull null] : alias
}; };
[self jpushFireDocumentEvent:JPushDocumentEvent_SetTagsWithAlias jsString:[dict toJsonString]]; [JPushPlugin fireDocumentEvent:JPushDocumentEvent_SetTagsWithAlias jsString:[dict toJsonString]];
} }
- (void)networkDidReceiveMessage:(NSNotification *)notification { - (void)networkDidReceiveMessage:(NSNotification *)notification {
if (notification && notification.userInfo) { if (notification && notification.userInfo) {
[self jpushFireDocumentEvent:JPushDocumentEvent_ReceiveMessage jsString:[notification.userInfo toJsonString]]; [JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage jsString:[notification.userInfo toJsonString]];
} }
} }
+2 -2
View File
@@ -6,10 +6,10 @@
* | | | | / /\ \ | | | | \ \______| | * | | | | / /\ \ | | | | \ \______| |
* | | | | /_/ \_\ | | | | \_________| * | | | | /_/ \_\ | | | | \_________|
* *
* Copyright (c) 2011 ~ 2015 Shenzhen HXHG. All rights reserved. * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
*/ */
#define JPUSH_VERSION_NUMBER 3.0.0 #define JPUSH_VERSION_NUMBER 3.0.2
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
Binary file not shown.
+149 -147
View File
@@ -7,51 +7,64 @@ JPushPlugin.prototype.openNotification = {}
JPushPlugin.prototype.receiveNotification = {} JPushPlugin.prototype.receiveNotification = {}
JPushPlugin.prototype.isPlatformIOS = function () { JPushPlugin.prototype.isPlatformIOS = function () {
var isPlatformIOS = device.platform == 'iPhone' || var isPlatformIOS = (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 return isPlatformIOS
} }
JPushPlugin.prototype.error_callback = function (msg) { JPushPlugin.prototype.errorCallback = function (msg) {
console.log('Javascript Callback Error: ' + msg) console.log('Javascript Callback Error: ' + msg)
} }
JPushPlugin.prototype.call_native = function (name, args, callback) { JPushPlugin.prototype.callNative = function (name, args, successCallback) {
ret = cordova.exec(callback, this.error_callback, 'JPushPlugin', name, args) cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
return ret
} }
// public methods // Common methods
JPushPlugin.prototype.init = function () { JPushPlugin.prototype.init = function () {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.call_native('initial', [], null) this.callNative('initial', [], null)
} else { } else {
this.call_native('init', [], null) this.callNative('init', [], null)
} }
} }
JPushPlugin.prototype.getRegistrationID = function (callback) { JPushPlugin.prototype.setDebugMode = function (mode) {
this.call_native('getRegistrationID', [], callback) if (device.platform === 'Android') {
this.callNative('setDebugMode', [mode], null)
} else {
if (mode === true) {
this.setDebugModeFromIos()
} else {
this.setLogOFF()
}
}
}
JPushPlugin.prototype.getRegistrationID = function (successCallback) {
this.callNative('getRegistrationID', [], successCallback)
} }
JPushPlugin.prototype.stopPush = function () { JPushPlugin.prototype.stopPush = function () {
this.call_native('stopPush', [], null) this.callNative('stopPush', [], null)
} }
JPushPlugin.prototype.resumePush = function () { JPushPlugin.prototype.resumePush = function () {
this.call_native('resumePush', [], null) this.callNative('resumePush', [], null)
} }
JPushPlugin.prototype.isPushStopped = function (callback) { JPushPlugin.prototype.isPushStopped = function (successCallback) {
this.call_native('isPushStopped', [], callback) this.callNative('isPushStopped', [], successCallback)
} }
// iOS methods JPushPlugin.prototype.clearLocalNotifications = function () {
if (device.platform === 'Android') {
JPushPlugin.prototype.startJPushSDK = function () { this.callNative('clearLocalNotifications', [], null)
this.call_native('startJPushSDK', [] , null) } else {
this.clearAllLocalNotifications()
}
} }
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) { JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
@@ -65,100 +78,15 @@ JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
} }
var arrayTagWithAlias = [tags] var arrayTagWithAlias = [tags]
arrayTagWithAlias.unshift(alias) arrayTagWithAlias.unshift(alias)
this.call_native('setTagsWithAlias', arrayTagWithAlias, null) this.callNative('setTagsWithAlias', arrayTagWithAlias, null)
} }
JPushPlugin.prototype.setTags = function (tags) { JPushPlugin.prototype.setTags = function (tags) {
this.call_native('setTags', tags, null) this.callNative('setTags', tags, null)
} }
JPushPlugin.prototype.setAlias = function (alias) { JPushPlugin.prototype.setAlias = function (alias) {
this.call_native('setAlias', [alias], null) this.callNative('setAlias', [alias], null)
}
JPushPlugin.prototype.setBadge = function (value) {
if (this.isPlatformIOS()) {
this.call_native('setBadge', [value], null)
}
}
JPushPlugin.prototype.resetBadge = function () {
if (this.isPlatformIOS()) {
this.call_native('resetBadge', [], null)
}
}
JPushPlugin.prototype.setDebugModeFromIos = function () {
if (this.isPlatformIOS()) {
this.call_native('setDebugModeFromIos', [], null)
}
}
JPushPlugin.prototype.setLogOFF = function () {
if (this.isPlatformIOS()) {
this.call_native('setLogOFF', [], null)
}
}
JPushPlugin.prototype.setCrashLogON = function () {
if (this.isPlatformIOS()) {
this.call_native('crashLogON', [], null)
}
}
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content,
badge, notificationID, extras) {
if (this.isPlatformIOS()) {
this.call_native('setLocalNotification', [delayTime, content, badge, notificationID, extras], null)
}
}
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function (identifierKey) {
if (this.isPlatformIOS()) {
this.call_native('deleteLocalNotificationWithIdentifierKey', [identifierKey], null)
}
}
JPushPlugin.prototype.clearAllLocalNotifications = function () {
if (this.isPlatformIOS()) {
this.call_native('clearAllLocalNotifications', [], null)
}
}
JPushPlugin.prototype.setLocation = function (latitude, longitude) {
if (this.isPlatformIOS()) {
this.call_native('setLocation', [latitude, longitude], null)
}
}
JPushPlugin.prototype.startLogPageView = function (pageName) {
if (this.isPlatformIOS()) {
this.call_native('startLogPageView', [pageName], null)
}
}
JPushPlugin.prototype.stopLogPageView = function (pageName) {
if (this.isPlatformIOS()) {
this.call_native('stopLogPageView', [pageName], null)
}
}
JPushPlugin.prototype.beginLogPageView = function (pageName, duration) {
if (this.isPlatformIOS()) {
this.call_native('beginLogPageView', [pageName, duration], null)
}
}
JPushPlugin.prototype.setApplicationIconBadgeNumber = function (badge) {
if (this.isPlatformIOS()) {
this.call_native('setApplicationIconBadgeNumber', [badge], null)
}
}
JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) {
if (this.isPlatformIOS()) {
this.call_native('getApplicationIconBadgeNumber', [], callback)
}
} }
// 判断系统设置中是否对本应用启用通知。 // 判断系统设置中是否对本应用启用通知。
@@ -169,38 +97,123 @@ JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) {
// UIRemoteNotificationTypeAlert = 1 << 2, // UIRemoteNotificationTypeAlert = 1 << 2,
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3, // UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
// Android: 返回值 1 代表通知启用、0: 通知关闭。 // Android: 返回值 1 代表通知启用、0: 通知关闭。
JPushPlugin.prototype.getUserNotificationSettings = function (callback) { JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.call_native('getUserNotificationSettings', [], callback) this.callNative('getUserNotificationSettings', [], successCallback)
} else if (device.platform == 'Android') { } else if (device.platform == 'Android') {
this.call_native('areNotificationEnabled', [], callback) this.callNative('areNotificationEnabled', [], successCallback)
}
}
// iOS methods
JPushPlugin.prototype.startJPushSDK = function () {
this.callNative('startJPushSDK', [] , null)
}
JPushPlugin.prototype.setBadge = function (value) {
if (this.isPlatformIOS()) {
this.callNative('setBadge', [value], null)
}
}
JPushPlugin.prototype.resetBadge = function () {
if (this.isPlatformIOS()) {
this.callNative('resetBadge', [], null)
}
}
JPushPlugin.prototype.setDebugModeFromIos = function () {
if (this.isPlatformIOS()) {
this.callNative('setDebugModeFromIos', [], null)
}
}
JPushPlugin.prototype.setLogOFF = function () {
if (this.isPlatformIOS()) {
this.callNative('setLogOFF', [], null)
}
}
JPushPlugin.prototype.setCrashLogON = function () {
if (this.isPlatformIOS()) {
this.callNative('crashLogON', [], null)
}
}
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content,
badge, notificationID, extras) {
if (this.isPlatformIOS()) {
this.callNative('setLocalNotification', [delayTime, content, badge, notificationID, extras], null)
}
}
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function (identifierKey) {
if (this.isPlatformIOS()) {
this.callNative('deleteLocalNotificationWithIdentifierKey', [identifierKey], null)
}
}
JPushPlugin.prototype.clearAllLocalNotifications = function () {
if (this.isPlatformIOS()) {
this.callNative('clearAllLocalNotifications', [], null)
}
}
JPushPlugin.prototype.setLocation = function (latitude, longitude) {
if (this.isPlatformIOS()) {
this.callNative('setLocation', [latitude, longitude], null)
}
}
JPushPlugin.prototype.startLogPageView = function (pageName) {
if (this.isPlatformIOS()) {
this.callNative('startLogPageView', [pageName], null)
}
}
JPushPlugin.prototype.stopLogPageView = function (pageName) {
if (this.isPlatformIOS()) {
this.callNative('stopLogPageView', [pageName], null)
}
}
JPushPlugin.prototype.beginLogPageView = function (pageName, duration) {
if (this.isPlatformIOS()) {
this.callNative('beginLogPageView', [pageName, duration], null)
}
}
JPushPlugin.prototype.setApplicationIconBadgeNumber = function (badge) {
if (this.isPlatformIOS()) {
this.callNative('setApplicationIconBadgeNumber', [badge], null)
}
}
JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) {
if (this.isPlatformIOS()) {
this.callNative('getApplicationIconBadgeNumber', [], callback)
} }
} }
JPushPlugin.prototype.addDismissActions = function (actions, categoryId) { JPushPlugin.prototype.addDismissActions = function (actions, categoryId) {
this.call_native('addDismissActions', [actions, categoryId]) this.callNative('addDismissActions', [actions, categoryId])
} }
JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) { JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
this.call_native('addNotificationActions', [actions, categoryId]) this.callNative('addNotificationActions', [actions, categoryId])
} }
// Android methods // Android methods
JPushPlugin.prototype.setDebugMode = function (mode) {
if (device.platform == 'Android') {
this.call_native('setDebugMode', [mode], null)
}
}
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () { JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
if (device.platform == 'Android') { if (device.platform == 'Android') {
this.call_native('setBasicPushNotificationBuilder', [], null) this.callNative('setBasicPushNotificationBuilder', [], null)
} }
} }
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () { JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
if (device.platform == 'Android') { if (device.platform == 'Android') {
this.call_native('setCustomPushNotificationBuilder', [], null) this.callNative('setCustomPushNotificationBuilder', [], null)
} }
} }
@@ -226,51 +239,40 @@ JPushPlugin.prototype.receiveNotificationInAndroidCallback = function (data) {
} }
JPushPlugin.prototype.clearAllNotification = function () { JPushPlugin.prototype.clearAllNotification = function () {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.call_native('clearAllNotification', [], null) this.callNative('clearAllNotification', [], null)
} }
} }
JPushPlugin.prototype.clearNotificationById = function (notificationId) { JPushPlugin.prototype.clearNotificationById = function (id) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.call_native('clearNotificationById', [notificationId], null) this.callNative('clearNotificationById', [id], null)
} }
} }
JPushPlugin.prototype.setLatestNotificationNum = function (num) { JPushPlugin.prototype.setLatestNotificationNum = function (num) {
if (device.platform == 'Android') { if (device.platform == 'Android') {
this.call_native('setLatestNotificationNum', [num], null) this.callNative('setLatestNotificationNum', [num], null)
}
}
JPushPlugin.prototype.setDebugMode = function (mode) {
if (device.platform == 'Android') {
this.call_native('setDebugMode', [mode], 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.call_native('addLocalNotification', [builderId, content, title, notificationID, broadcastTime, extras], null) this.callNative('addLocalNotification',
[builderId, content, title, notificationID, broadcastTime, extras], null)
} }
} }
JPushPlugin.prototype.removeLocalNotification = function (notificationID) { JPushPlugin.prototype.removeLocalNotification = function (notificationID) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.call_native('removeLocalNotification', [notificationID], null) this.callNative('removeLocalNotification', [notificationID], null)
}
}
JPushPlugin.prototype.clearLocalNotifications = function () {
if (device.platform == 'Android') {
this.call_native('clearLocalNotifications', [], null)
} }
} }
JPushPlugin.prototype.reportNotificationOpened = function (msgID) { JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
if (device.platform == 'Android') { if (device.platform === 'Android') {
this.call_native('reportNotificationOpened', [msgID], null) this.callNative('reportNotificationOpened', [msgID], null)
} }
} }
@@ -280,7 +282,7 @@ JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
*/ */
JPushPlugin.prototype.setStatisticsOpen = function (mode) { JPushPlugin.prototype.setStatisticsOpen = function (mode) {
if (device.platform == 'Android') { if (device.platform == 'Android') {
this.call_native('setStatisticsOpen', [mode], null) this.callNative('setStatisticsOpen', [mode], null)
} }
} }
@@ -290,19 +292,19 @@ JPushPlugin.prototype.setStatisticsOpen = function (mode) {
*/ */
JPushPlugin.prototype.requestPermission = function () { JPushPlugin.prototype.requestPermission = function () {
if (device.platform == 'Android') { if (device.platform == 'Android') {
this.call_native('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.call_native('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.call_native('setPushTime', [weekdays, startHour, endHour], null) this.callNative('setPushTime', [weekdays, startHour, endHour], null)
} }
} }