Compare commits

...

20 Commits

Author SHA1 Message Date
lhw5123 2fab3a9e60 Update npm version. 2017-05-10 17:29:31 +08:00
lhw5123 a032906b1f Merge branch 'dev' 2017-05-10 16:53:03 +08:00
lhw5123 d362ee788b Update Android SDK to v3.0.6 2017-05-10 16:51:28 +08:00
huangminlinux 50588d593c update jpush to 3.0.5 2017-05-03 16:33:44 +08:00
lhw5123 ea06f04415 Merge branch 'dev' 2017-05-02 23:24:40 +08:00
Hevin e4d8752065 Update android sdk to v3.0.5 2017-05-02 17:53:16 +08:00
Hevin 9765352969 Merge remote-tracking branch 'refs/remotes/origin/dev' 2017-04-13 13:52:02 +08:00
Hevin 0589ac82ea Update Android API doc 2017-04-13 13:50:26 +08:00
Hevin ff1fa91d67 Update API doc 2017-04-13 13:44:55 +08:00
lhw5123 14f91aacf8 Change plugin name. 2017-03-30 10:30:27 +08:00
lhw5123 15c403a471 Merge branch 'master' into dev 2017-03-29 15:30:05 +08:00
lhw5123 8b0b8cc26f Change npm dependencies. 2017-03-29 15:29:20 +08:00
pikacode 78e2e9736e Merge branch 'dev' 2017-03-27 16:32:53 +08:00
pikacode a8daded81b iOS - fix #220 2017-03-27 16:32:28 +08:00
Hevin 18f69303ce Update Android SDK to v3.0.3 2017-03-16 14:18:04 +08:00
Hevin 390fbb9fda Add jpush.receiveRegistrationId event. 2017-03-16 10:56:04 +08:00
Hevin 3a4ceb32ce Merge remote-tracking branch 'refs/remotes/origin/dev' 2017-03-09 17:22:58 +08:00
Hevin 20ab9319bc Resolve conflicts. 2017-03-09 17:19:59 +08:00
Hevin ef33ad5a85 Sync plugin.xml with jmessage-phonegap-plugin 2017-03-09 17:18:10 +08:00
Hevin c355cd2b9f Update plugin.xml
Change android config.
2017-03-06 16:43:14 +08:00
12 changed files with 123 additions and 90 deletions
+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.0-blue.svg)](https://github.com/jpush/jpush-phonegap-plugin/releases) [![release](https://img.shields.io/badge/release-3.1.6-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 -6
View File
@@ -1,9 +1,10 @@
# Android API简介 # Android API 简介
- [注册成功事件](#注册成功事件)
- [接收通知时获得通知的内容](#接收通知时获得通知的内容) - [接收通知时获得通知的内容](#接收通知时获得通知的内容)
- [打开通知时获得通知的内容](#打开通知时获得通知的内容) - [打开通知时获得通知的内容](#打开通知时获得通知的内容)
- [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容) - [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容)
- [获取集成日志(适用于 iOS](#获取集成日志适用于 iOS) - [获取集成日志(同时适用于 iOS](#获取集成日志同时适用于-ios)
- [接收消息和点击通知事件](#接收消息和点击通知事件) - [接收消息和点击通知事件](#接收消息和点击通知事件)
- [统计分析](#统计分析) - [统计分析](#统计分析)
- [清除通知](#清除通知) - [清除通知](#清除通知)
@@ -14,6 +15,18 @@
- [本地通知](#本地通知) - [本地通知](#本地通知)
- [富媒体页面 JavaScript 回调 API](#富媒体页面-javascript-回调-api) - [富媒体页面 JavaScript 回调 API](#富媒体页面-javascript-回调-api)
## 注册成功事件
### jpush.receiveRegistrationId
集成了 JPush SDK 的应用程序在第一次成功注册到 JPush 服务器时,JPush 服务器会给客户端返回一个唯一的该设备的标识 - RegistrationID。
就会触发这个事件(注意只有第一次会触发该事件,之后如果想要取到 registrationId,可以直接调用 *getRegistrationID* 方法)。
#### 代码示例
```Javascript
document.addEventListener('jpush.receiveRegistrationId', function (event) {
console.log(event.registrationId)
}, false)
```
## 接收通知时获得通知的内容 ## 接收通知时获得通知的内容
- 内容: - 内容:
@@ -39,7 +52,7 @@
- 附加字段: - 附加字段:
window.plugins.jPushPlugin.receiveMessage.extras.yourKey window.plugins.jPushPlugin.receiveMessage.extras.yourKey
## 获取集成日志(适用于 iOS ## 获取集成日志(同时适用于 iOS
### API - setDebugMode ### API - setDebugMode
@@ -55,7 +68,6 @@
- true 显示集成日志。 - true 显示集成日志。
- false 不显示集成日志。 - false 不显示集成日志。
## 接收消息和点击通知事件 ## 接收消息和点击通知事件
### API - receiveMessageInAndroidCallback ### API - receiveMessageInAndroidCallback
@@ -82,7 +94,6 @@
- data: js 字符串。 - data: js 字符串。
## 统计分析 ## 统计分析
### API - onResume / onPause ### API - onResume / onPause
@@ -270,7 +281,7 @@ JPush SDK 提供了 2 个用于定制通知栏样式的构建类:
- builderId: 设置本地通知样式。 - builderId: 设置本地通知样式。
- content: 设置本地通知的 content。 - content: 设置本地通知的 content。
- title: 设置本地通知的 title。 - title: 设置本地通知的 title。
- notificaitonID: 设置本地通知的 ID。 - notificaitonID: 设置本地通知的 ID(不要为 0
- broadcastTime: 设置本地通知触发时间,为距离当前时间的数值,单位是毫秒。 - broadcastTime: 设置本地通知触发时间,为距离当前时间的数值,单位是毫秒。
- extras: 设置额外的数据信息 extras 为 json 字符串。 - extras: 设置额外的数据信息 extras 为 json 字符串。
+36 -38
View File
@@ -1,40 +1,38 @@
{ {
"name": "jpush-phonegap-plugin", "name": "jpush-phonegap-plugin",
"version": "3.1.0", "version": "3.1.6",
"description": "JPush for cordova plugin", "description": "JPush for cordova plugin",
"cordova": { "cordova": {
"id": "jpush-phonegap-plugin", "id": "jpush-phonegap-plugin",
"platforms": [ "platforms": [
"ios", "ios",
"android" "android"
] ]
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://github.com/jpush/jpush-phonegap-plugin.git" "url": "git+https://github.com/jpush/jpush-phonegap-plugin.git"
}, },
"keywords": [ "keywords": [
"JPush", "JPush",
"push", "push",
"Push", "Push",
"ecosystem:cordova", "ecosystem:cordova",
"cordova-ios", "cordova-ios",
"cordova-android" "cordova-android"
], ],
"engines": [ "engines": [{
{ "name": "cordova",
"name": "cordova", "version": ">=3.0"
"version": ">=3.0" }],
} "dependencies": {
], "cordova-plugin-device": "*",
"peerDependencies": { "cordova-plugin-jcore": "1.1.4"
"cordova-plugin-device": ">=1.0.0", },
"cordova-plugin-jcore": "1.1.0" "author": "JiGuang",
}, "license": "MIT",
"author": "JiGuang", "bugs": {
"license": "MIT", "url": "https://github.com/jpush/jpush-phonegap-plugin/issues"
"bugs": { },
"url": "https://github.com/jpush/jpush-phonegap-plugin/issues" "homepage": "https://github.com/jpush/jpush-phonegap-plugin#readme"
},
"homepage": "https://github.com/jpush/jpush-phonegap-plugin#readme"
} }
+15 -8
View File
@@ -2,9 +2,9 @@
<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.0"> version="3.1.6">
<name>JPush Plugin</name> <name>JPush</name>
<description>JPush for cordova plugin</description> <description>JPush for cordova plugin</description>
<author>JPush</author> <author>JPush</author>
<keywords>JPush,push</keywords> <keywords>JPush,push</keywords>
@@ -38,7 +38,7 @@
<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.2.a" framework="true" /> <source-file src="src/ios/lib/jpush-ios-3.0.5.a" framework="true" />
<resource-file src="src/ios/JPushConfig.plist" /> <resource-file src="src/ios/JPushConfig.plist" />
<framework src="CFNetwork.framework" weak="true" /> <framework src="CFNetwork.framework" weak="true" />
@@ -111,7 +111,8 @@
<!-- Required SDK 核心功能--> <!-- Required SDK 核心功能-->
<service android:name="cn.jpush.android.service.PushService" <service android:name="cn.jpush.android.service.PushService"
android:enabled="true" android:enabled="true"
android:exported="false"> android:exported="false"
android:process=":remote">
<intent-filter> <intent-filter>
<action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REGISTER" />
<action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.REPORT" />
@@ -122,10 +123,11 @@
<!-- Required SDK核心功能--> <!-- Required SDK核心功能-->
<receiver android:name="cn.jpush.android.service.PushReceiver" <receiver android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true"> android:enabled="true"
android:exported="false">
<intent-filter android:priority="1000"> <intent-filter android:priority="1000">
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
<!--Required 显示通知栏 --> <!--Required 显示通知栏 -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
<category android:name="$PACKAGE_NAME" /> <category android:name="$PACKAGE_NAME" />
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>
@@ -136,6 +138,7 @@
<intent-filter> <intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter> </intent-filter>
</receiver> </receiver>
@@ -172,14 +175,18 @@
<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"
android:exported="false" />
<!-- 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="$APP_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.1.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/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" />
+20
View File
@@ -262,6 +262,26 @@ public class JPushPlugin extends CordovaPlugin {
JPushPlugin.notificationAlert = null; JPushPlugin.notificationAlert = null;
} }
static void transmitReceiveRegistrationId(String rId) {
if (instance == null) {
return;
}
JSONObject data = new JSONObject();
try {
data.put("registrationId", rId);
} catch (JSONException e) {
e.printStackTrace();
}
String format = "window.plugins.jPushPlugin.receiveRegistrationIdInAndroidCallback(%s);";
final String js = String.format(format, data.toString());
cordovaActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
instance.webView.loadUrl("javascript:" + js);
}
});
}
@Override @Override
public boolean execute(final String action, final JSONArray data, public boolean execute(final String action, final JSONArray data,
final CallbackContext callbackContext) throws JSONException { final CallbackContext callbackContext) throws JSONException {
+12 -20
View File
@@ -1,18 +1,18 @@
package cn.jpush.phonegap; package cn.jpush.phonegap;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.JPushInterface;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyReceiver extends BroadcastReceiver { public class MyReceiver extends BroadcastReceiver {
private static String TAG = "JPushPlugin";
private static final List<String> IGNORED_EXTRAS_KEYS = private static final List<String> IGNORED_EXTRAS_KEYS =
Arrays.asList( Arrays.asList(
"cn.jpush.android.TITLE", "cn.jpush.android.TITLE",
@@ -24,18 +24,15 @@ public class MyReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
String action = intent.getAction(); String action = intent.getAction();
if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(action)) { if (action.equals(JPushInterface.ACTION_REGISTRATION_ID)) {
String rId = intent.getStringExtra(JPushInterface.EXTRA_REGISTRATION_ID);
JPushPlugin.transmitReceiveRegistrationId(rId);
} else if (action.equals(JPushInterface.ACTION_MESSAGE_RECEIVED)) {
handlingMessageReceive(intent); handlingMessageReceive(intent);
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(action)) { } else if (action.equals(JPushInterface.ACTION_NOTIFICATION_RECEIVED)) {
handlingNotificationReceive(context, intent); handlingNotificationReceive(context, intent);
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(action)) { } else if (action.equals(JPushInterface.ACTION_NOTIFICATION_OPENED)) {
handlingNotificationOpen(context, intent); handlingNotificationOpen(context, intent);
} else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(action)) {
// 当在 HTML 页面中调用 JPushWeb.triggerNativeAction(String params) 方法时触发此方法,
// 再进行相关的操作。
} else {
Log.d(TAG, "Unhandled intent - " + action);
} }
} }
@@ -46,8 +43,6 @@ public class MyReceiver extends BroadcastReceiver {
} }
private void handlingNotificationOpen(Context context, Intent intent) { private void handlingNotificationOpen(Context context, Intent intent) {
Log.i(TAG, "---------------- handlingNotificationOpen");
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE); String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
JPushPlugin.openNotificationTitle = title; JPushPlugin.openNotificationTitle = title;
@@ -60,15 +55,13 @@ public class MyReceiver extends BroadcastReceiver {
JPushPlugin.transmitNotificationOpen(title, alert, extras); JPushPlugin.transmitNotificationOpen(title, alert, extras);
Intent launch = context.getPackageManager().getLaunchIntentForPackage( Intent launch = context.getPackageManager().getLaunchIntentForPackage(
context.getPackageName()); context.getPackageName());
launch.addCategory(Intent.CATEGORY_LAUNCHER); launch.addCategory(Intent.CATEGORY_LAUNCHER);
launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(launch); context.startActivity(launch);
} }
private void handlingNotificationReceive(Context context, Intent intent) { private void handlingNotificationReceive(Context context, Intent intent) {
Log.i(TAG, "---------------- handlingNotificationReceive");
Intent launch = context.getPackageManager().getLaunchIntentForPackage( Intent launch = context.getPackageManager().getLaunchIntentForPackage(
context.getPackageName()); context.getPackageName());
launch.addCategory(Intent.CATEGORY_LAUNCHER); launch.addCategory(Intent.CATEGORY_LAUNCHER);
@@ -99,5 +92,4 @@ public class MyReceiver extends BroadcastReceiver {
} }
return extrasMap; return extrasMap;
} }
} }
Binary file not shown.
Binary file not shown.
+11 -14
View File
@@ -28,29 +28,27 @@
return [self init_plus]; return [self init_plus];
} }
NSDictionary *_launchOptions; -(void)fireOpenNotification:(NSTimer*)timer{
if (SharedJPushPlugin) {
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[timer.userInfo toJsonString]];
[timer invalidate];
}
}
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) {
[NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) { [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fireOpenNotification:) userInfo:userInfo1 repeats:YES];
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) {
[NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) { [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fireOpenNotification:) userInfo:userInfo2 repeats:YES];
if (SharedJPushPlugin) {
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo2 toJsonString]];
[timer invalidate];
}
}];
} }
} }
[JPUSHService setDebugMode]; [JPUSHService setDebugMode];
@@ -64,7 +62,6 @@ NSDictionary *_launchOptions;
if (![delay boolValue]) { if (![delay boolValue]) {
[self startJPushSDK]; [self startJPushSDK];
} }
} }
} }
+2 -2
View File
@@ -9,7 +9,7 @@
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved. * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
*/ */
#define JPUSH_VERSION_NUMBER 3.0.2 #define JPUSH_VERSION_NUMBER 3.0.5
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
@@ -456,7 +456,7 @@ callbackSelector:(SEL)cbSelector
* *
* SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志. * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
* *
* 调用本接口可打开日志级别为: Debug, 打印调试日志. * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志.
*/ */
+ (void)setDebugMode; + (void)setDebugMode;
+8
View File
@@ -217,6 +217,14 @@ JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
} }
} }
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function (data) {
if (device.platform === 'Android') {
data = JSON.stringify(data)
var event = JSON.parse(data)
cordova.fireDocumentEvent('jpush.receiveRegistrationId', event);
}
}
JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) { JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) {
data = JSON.stringify(data) data = JSON.stringify(data)
console.log('JPushPlugin:receiveMessageInAndroidCallback: ' + data) console.log('JPushPlugin:receiveMessageInAndroidCallback: ' + data)