mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-01-28 00:00:03 +08:00
Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
13b36b746c | ||
|
|
b234861e44 | ||
|
|
2287ef10dd | ||
|
|
2a05ea1784 | ||
|
|
9d3d32d725 | ||
|
|
3c88e87b17 | ||
|
|
b3b2af1520 | ||
|
|
6e8b5931fb | ||
|
|
23ed4817a4 | ||
|
|
9a1da318cc | ||
|
|
2fab3a9e60 | ||
|
|
a032906b1f | ||
|
|
d362ee788b | ||
|
|
50588d593c | ||
|
|
ea06f04415 | ||
|
|
e4d8752065 | ||
|
|
9765352969 | ||
|
|
0589ac82ea | ||
|
|
ff1fa91d67 | ||
|
|
14f91aacf8 | ||
|
|
15c403a471 | ||
|
|
8b0b8cc26f | ||
|
|
78e2e9736e | ||
|
|
a8daded81b | ||
|
|
18f69303ce | ||
|
|
390fbb9fda | ||
|
|
3a4ceb32ce | ||
|
|
20ab9319bc | ||
|
|
ef33ad5a85 | ||
|
|
c355cd2b9f |
40
.gitignore
vendored
40
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
||||
[]()
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin)
|
||||
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
||||
|
||||
@@ -69,7 +69,7 @@ Android 的推送通过长连接的方式实现,只有在连接保持的情况
|
||||
#### 打包时遇到 i386 打包失败怎么办?
|
||||
|
||||
```
|
||||
cordova platform update ios
|
||||
cordova platform update ios
|
||||
```
|
||||
|
||||
#### ionic 2 如何调用 API?
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# Android API简介
|
||||
# Android API 简介
|
||||
|
||||
- [注册成功事件](#注册成功事件)
|
||||
- [接收通知时获得通知的内容](#接收通知时获得通知的内容)
|
||||
- [打开通知时获得通知的内容](#打开通知时获得通知的内容)
|
||||
- [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容)
|
||||
- [获取集成日志(适用于 iOS)](#获取集成日志(适用于 iOS))
|
||||
- [获取集成日志(同时适用于 iOS)](#获取集成日志同时适用于-ios)
|
||||
- [接收消息和点击通知事件](#接收消息和点击通知事件)
|
||||
- [统计分析](#统计分析)
|
||||
- [清除通知](#清除通知)
|
||||
@@ -14,6 +15,18 @@
|
||||
- [本地通知](#本地通知)
|
||||
- [富媒体页面 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
|
||||
|
||||
## 获取集成日志(适用于 iOS)
|
||||
## 获取集成日志(同时适用于 iOS)
|
||||
|
||||
### API - setDebugMode
|
||||
|
||||
@@ -55,7 +68,6 @@
|
||||
- true 显示集成日志。
|
||||
- false 不显示集成日志。
|
||||
|
||||
|
||||
## 接收消息和点击通知事件
|
||||
### API - receiveMessageInAndroidCallback
|
||||
|
||||
@@ -82,7 +94,6 @@
|
||||
|
||||
- data: js 字符串。
|
||||
|
||||
|
||||
## 统计分析
|
||||
|
||||
### API - onResume / onPause
|
||||
@@ -270,7 +281,7 @@ JPush SDK 提供了 2 个用于定制通知栏样式的构建类:
|
||||
- builderId: 设置本地通知样式。
|
||||
- content: 设置本地通知的 content。
|
||||
- title: 设置本地通知的 title。
|
||||
- notificaitonID: 设置本地通知的 ID。
|
||||
- notificaitonID: 设置本地通知的 ID(不要为 0)。
|
||||
- broadcastTime: 设置本地通知触发时间,为距离当前时间的数值,单位是毫秒。
|
||||
- extras: 设置额外的数据信息 extras 为 json 字符串。
|
||||
|
||||
|
||||
@@ -161,9 +161,11 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
JPushPlugin.prototype.setTagsWithAlias(tags, alias)
|
||||
JPushPlugin.prototype.setTags(tags)
|
||||
JPushPlugin.prototype.setAlias(alias)
|
||||
```js
|
||||
JPushPlugin.prototype.setTagsWithAlias(tags, alias, successCallback, errorCallback)
|
||||
JPushPlugin.prototype.setTags(tags, successCallback, errorCallback)
|
||||
JPushPlugin.prototype.setAlias(alias, successCallback, errorCallback)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
* tags:
|
||||
@@ -181,17 +183,15 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
||||
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
||||
* 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
|
||||
|
||||
#### 返回值说明
|
||||
#### 代码示例
|
||||
|
||||
函数本身无返回值,但需要注册 `jpush.setTagsWithAlias` 事件来监听设置结果:
|
||||
|
||||
document.addEventListener("jpush.setTagsWithAlias", function(event) {
|
||||
console.log("onTagsWithAlias")
|
||||
var result = "result code:" + event.resultCode + " "
|
||||
result += "tags:" + event.tags + " "
|
||||
result += "alias:" + event.alias + " "
|
||||
$("#tagAliasResult").html(result)
|
||||
}, false)
|
||||
```js
|
||||
window.plugins.jPushPlugin.setTagsWithAlias([tag1, tag2], alias1, function () {
|
||||
// success callback.
|
||||
}, function (errorMsg) {
|
||||
// errorMsg 格式为 'errorCode: error message'.
|
||||
})
|
||||
```
|
||||
|
||||
#### 错误码定义
|
||||
|
||||
|
||||
@@ -116,7 +116,10 @@
|
||||
if (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) {
|
||||
console.log(exception);
|
||||
}
|
||||
|
||||
74
package.json
74
package.json
@@ -1,40 +1,38 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.1.0",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
"platforms": [
|
||||
"ios",
|
||||
"android"
|
||||
]
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/jpush/jpush-phonegap-plugin.git"
|
||||
},
|
||||
"keywords": [
|
||||
"JPush",
|
||||
"push",
|
||||
"Push",
|
||||
"ecosystem:cordova",
|
||||
"cordova-ios",
|
||||
"cordova-android"
|
||||
],
|
||||
"engines": [
|
||||
{
|
||||
"name": "cordova",
|
||||
"version": ">=3.0"
|
||||
}
|
||||
],
|
||||
"peerDependencies": {
|
||||
"cordova-plugin-device": ">=1.0.0",
|
||||
"cordova-plugin-jcore": "1.1.0"
|
||||
},
|
||||
"author": "JiGuang",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/jpush/jpush-phonegap-plugin/issues"
|
||||
},
|
||||
"homepage": "https://github.com/jpush/jpush-phonegap-plugin#readme"
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.1.7",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
"platforms": [
|
||||
"ios",
|
||||
"android"
|
||||
]
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/jpush/jpush-phonegap-plugin.git"
|
||||
},
|
||||
"keywords": [
|
||||
"JPush",
|
||||
"push",
|
||||
"Push",
|
||||
"ecosystem:cordova",
|
||||
"cordova-ios",
|
||||
"cordova-android"
|
||||
],
|
||||
"engines": [{
|
||||
"name": "cordova",
|
||||
"version": ">=3.0"
|
||||
}],
|
||||
"dependencies": {
|
||||
"cordova-plugin-device": "*",
|
||||
"cordova-plugin-jcore": "1.1.4"
|
||||
},
|
||||
"author": "JiGuang",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/jpush/jpush-phonegap-plugin/issues"
|
||||
},
|
||||
"homepage": "https://github.com/jpush/jpush-phonegap-plugin#readme"
|
||||
}
|
||||
|
||||
45
plugin.xml
45
plugin.xml
@@ -2,9 +2,9 @@
|
||||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
id="jpush-phonegap-plugin"
|
||||
version="3.1.0">
|
||||
version="3.1.7">
|
||||
|
||||
<name>JPush Plugin</name>
|
||||
<name>JPush</name>
|
||||
<description>JPush for cordova plugin</description>
|
||||
<author>JPush</author>
|
||||
<keywords>JPush,push</keywords>
|
||||
@@ -38,7 +38,7 @@
|
||||
<source-file src="src/ios/Plugins/AppDelegate+JPush.m" />
|
||||
|
||||
<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" />
|
||||
|
||||
<framework src="CFNetwork.framework" weak="true" />
|
||||
@@ -62,7 +62,7 @@
|
||||
<platform name="android">
|
||||
<config-file target="res/xml/config.xml" parent="/*">
|
||||
<feature name="JPushPlugin">
|
||||
<param name="android-package" value="cn.jpush.phonegap.JPushPlugin" />
|
||||
<param name="android-package" value="cn.jiguang.cordova.push.JPushPlugin" />
|
||||
</feature>
|
||||
</config-file>
|
||||
|
||||
@@ -111,7 +111,8 @@
|
||||
<!-- Required SDK 核心功能-->
|
||||
<service android:name="cn.jpush.android.service.PushService"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
android:exported="false"
|
||||
android:process=":remote">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.REGISTER" />
|
||||
<action android:name="cn.jpush.android.intent.REPORT" />
|
||||
@@ -122,10 +123,11 @@
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
||||
android:enabled="true">
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
<intent-filter android:priority="1000">
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||
<!--Required 显示通知栏 -->
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
@@ -136,6 +138,7 @@
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
@@ -151,7 +154,9 @@
|
||||
</service>
|
||||
|
||||
<!-- 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">
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||
<!-- Required 显示通知栏 -->
|
||||
@@ -172,23 +177,31 @@
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- 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 -->
|
||||
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
|
||||
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
|
||||
</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/JPushPlugin.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/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_progressbar.xml" target-dir="res/drawable" />
|
||||
<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_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_divider.png" target-dir="res/drawable-hdpi" />
|
||||
<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_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_webview_layout.xml" target-dir="res/layout" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.jpush.phonegap;
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
@@ -262,6 +262,26 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
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
|
||||
public boolean execute(final String action, final JSONArray data,
|
||||
final CallbackContext callbackContext) throws JSONException {
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package cn.jpush.phonegap;
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
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 {
|
||||
private static String TAG = "JPushPlugin";
|
||||
|
||||
private static final List<String> IGNORED_EXTRAS_KEYS =
|
||||
Arrays.asList(
|
||||
"cn.jpush.android.TITLE",
|
||||
@@ -24,18 +24,15 @@ public class MyReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
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);
|
||||
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(action)) {
|
||||
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_RECEIVED)) {
|
||||
handlingNotificationReceive(context, intent);
|
||||
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(action)) {
|
||||
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_OPENED)) {
|
||||
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) {
|
||||
Log.i(TAG, "---------------- handlingNotificationOpen");
|
||||
|
||||
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||
JPushPlugin.openNotificationTitle = title;
|
||||
|
||||
@@ -60,15 +55,13 @@ public class MyReceiver extends BroadcastReceiver {
|
||||
JPushPlugin.transmitNotificationOpen(title, alert, extras);
|
||||
|
||||
Intent launch = context.getPackageManager().getLaunchIntentForPackage(
|
||||
context.getPackageName());
|
||||
context.getPackageName());
|
||||
launch.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
context.startActivity(launch);
|
||||
}
|
||||
|
||||
private void handlingNotificationReceive(Context context, Intent intent) {
|
||||
Log.i(TAG, "---------------- handlingNotificationReceive");
|
||||
|
||||
Intent launch = context.getPackageManager().getLaunchIntentForPackage(
|
||||
context.getPackageName());
|
||||
launch.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
@@ -99,5 +92,4 @@ public class MyReceiver extends BroadcastReceiver {
|
||||
}
|
||||
return extrasMap;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Binary file not shown.
BIN
src/android/libs/jpush-android_v3.0.6.jar
Normal file
BIN
src/android/libs/jpush-android_v3.0.6.jar
Normal file
Binary file not shown.
@@ -28,29 +28,27 @@
|
||||
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{
|
||||
|
||||
|
||||
if (notification) {
|
||||
if (notification.userInfo) {
|
||||
NSDictionary *userInfo1 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
|
||||
if (userInfo1.count > 0) {
|
||||
[NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) {
|
||||
if (SharedJPushPlugin) {
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo1 toJsonString]];
|
||||
[timer invalidate];
|
||||
}
|
||||
}];
|
||||
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fireOpenNotification:) userInfo:userInfo1 repeats:YES];
|
||||
}
|
||||
|
||||
NSDictionary *userInfo2 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
|
||||
if (userInfo2.count > 0) {
|
||||
[NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) {
|
||||
if (SharedJPushPlugin) {
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo2 toJsonString]];
|
||||
[timer invalidate];
|
||||
}
|
||||
}];
|
||||
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fireOpenNotification:) userInfo:userInfo2 repeats:YES];
|
||||
}
|
||||
}
|
||||
[JPUSHService setDebugMode];
|
||||
@@ -64,7 +62,6 @@ NSDictionary *_launchOptions;
|
||||
if (![delay boolValue]) {
|
||||
[self startJPushSDK];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -99,24 +99,45 @@
|
||||
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{
|
||||
NSString *alias = [command argumentAtIndex:0];
|
||||
NSArray *tags = [command argumentAtIndex:1];
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
alias:alias
|
||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
||||
object:self];
|
||||
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
alias:alias
|
||||
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)setTags:(CDVInvokedUrlCommand *)command{
|
||||
NSArray *tags = command.arguments;
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
||||
object:self];
|
||||
-(void)setTags:(CDVInvokedUrlCommand*)command{
|
||||
NSArray *tags = command.arguments;
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
alias:nil
|
||||
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];
|
||||
[JPUSHService setAlias:alias
|
||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
||||
object:self];
|
||||
[JPUSHService setTags:nil
|
||||
alias:alias
|
||||
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{
|
||||
@@ -149,12 +170,12 @@
|
||||
[JPUSHService resetBadge];
|
||||
}
|
||||
|
||||
-(void)setApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command{
|
||||
-(void)setApplicationIconBadgeNumber:(CDVInvokedUrlCommand*)command{
|
||||
NSNumber *badge = [command argumentAtIndex:0];
|
||||
[UIApplication sharedApplication].applicationIconBadgeNumber = badge.intValue;
|
||||
}
|
||||
|
||||
-(void)getApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command {
|
||||
-(void)getApplicationIconBadgeNumber:(CDVInvokedUrlCommand*)command {
|
||||
NSInteger num = [UIApplication sharedApplication].applicationIconBadgeNumber;
|
||||
NSNumber *number = [NSNumber numberWithInteger:num];
|
||||
[self handleResultWithValue:number command:command];
|
||||
@@ -252,16 +273,22 @@
|
||||
NSString *textInputPlaceholder = dict[@"textInputPlaceholder"];
|
||||
UNTextInputNotificationAction *inputAction = [UNTextInputNotificationAction actionWithIdentifier:identifier title:title options:option.integerValue textInputButtonTitle:textInputButtonTitle textInputPlaceholder:textInputPlaceholder];
|
||||
[actions addObject:inputAction];
|
||||
}else{
|
||||
} else {
|
||||
UNNotificationAction *action = [UNNotificationAction actionWithIdentifier:title title:title options:option.integerValue];
|
||||
[actions addObject:action];
|
||||
}
|
||||
}
|
||||
UNNotificationCategory *category;
|
||||
if (dimiss) {
|
||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction];
|
||||
}else{
|
||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionNone];
|
||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId
|
||||
actions:actions
|
||||
intentIdentifiers:@[]
|
||||
options:UNNotificationCategoryOptionCustomDismissAction];
|
||||
} else {
|
||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId
|
||||
actions:actions
|
||||
intentIdentifiers:@[]
|
||||
options:UNNotificationCategoryOptionNone];
|
||||
}
|
||||
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]];
|
||||
}
|
||||
@@ -282,7 +309,7 @@
|
||||
NSNumber *isIDFA = [plistData valueForKey:JPushConfig_IsIDFA];
|
||||
|
||||
NSString *advertisingId = nil;
|
||||
if(isIDFA.boolValue){
|
||||
if(isIDFA.boolValue) {
|
||||
advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
|
||||
}
|
||||
[JPUSHService setupWithOption:userInfo
|
||||
@@ -293,7 +320,7 @@
|
||||
}
|
||||
|
||||
#pragma mark 将参数返回给js
|
||||
-(void)handleResultWithValue:(id)value command:(CDVInvokedUrlCommand*)command{
|
||||
-(void)handleResultWithValue:(id)value command:(CDVInvokedUrlCommand*)command {
|
||||
CDVPluginResult *result = nil;
|
||||
CDVCommandStatus status = CDVCommandStatus_OK;
|
||||
|
||||
@@ -317,17 +344,18 @@
|
||||
}
|
||||
|
||||
#pragma mark 设置标签及别名回调
|
||||
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias{
|
||||
NSDictionary *dict = @{@"resultCode":[NSNumber numberWithInt:resultCode],
|
||||
@"tags" :tags == nil ? [NSNull null] : [tags allObjects],
|
||||
@"alias" :alias == nil ? [NSNull null] : alias
|
||||
};
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_SetTagsWithAlias jsString:[dict toJsonString]];
|
||||
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias {
|
||||
if (resultCode == 0) { // Success
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
- (void)networkDidReceiveMessage:(NSNotification *)notification {
|
||||
if (notification && notification.userInfo) {
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage jsString:[notification.userInfo toJsonString]];
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage
|
||||
jsString:[notification.userInfo toJsonString]];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* 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>
|
||||
|
||||
@@ -456,7 +456,7 @@ callbackSelector:(SEL)cbSelector
|
||||
*
|
||||
* SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
|
||||
*
|
||||
* 调用本接口可打开日志级别为: Debug, 打印调试日志.
|
||||
* 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志.
|
||||
*/
|
||||
+ (void)setDebugMode;
|
||||
|
||||
|
||||
Binary file not shown.
@@ -7,19 +7,22 @@ JPushPlugin.prototype.openNotification = {}
|
||||
JPushPlugin.prototype.receiveNotification = {}
|
||||
|
||||
JPushPlugin.prototype.isPlatformIOS = function () {
|
||||
var isPlatformIOS = (device.platform == 'iPhone' ||
|
||||
device.platform == 'iPad' ||
|
||||
device.platform == 'iPod touch' ||
|
||||
device.platform == 'iOS')
|
||||
return isPlatformIOS
|
||||
return (device.platform === 'iPhone' ||
|
||||
device.platform === 'iPad' ||
|
||||
device.platform === 'iPod touch' ||
|
||||
device.platform === 'iOS')
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.errorCallback = function (msg) {
|
||||
console.log('Javascript Callback Error: ' + msg)
|
||||
console.log('JPush Callback Error: ' + msg)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.callNative = function (name, args, successCallback) {
|
||||
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
// Common methods
|
||||
@@ -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) {
|
||||
this.setAlias(alias)
|
||||
return
|
||||
@@ -78,29 +81,29 @@ JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
|
||||
}
|
||||
var arrayTagWithAlias = [tags]
|
||||
arrayTagWithAlias.unshift(alias)
|
||||
this.callNative('setTagsWithAlias', arrayTagWithAlias, null)
|
||||
this.callNative('setTagsWithAlias', arrayTagWithAlias, successCallback, errorCallback)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setTags = function (tags) {
|
||||
this.callNative('setTags', tags, null)
|
||||
JPushPlugin.prototype.setTags = function (tags, successCallback, errorCallback) {
|
||||
this.callNative('setTags', tags, successCallback, errorCallback)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setAlias = function (alias) {
|
||||
this.callNative('setAlias', [alias], null)
|
||||
JPushPlugin.prototype.setAlias = function (alias, successCallback, errorCallback) {
|
||||
this.callNative('setAlias', [alias], successCallback, errorCallback)
|
||||
}
|
||||
|
||||
// 判断系统设置中是否对本应用启用通知。
|
||||
// iOS: 返回值如果大于 0,代表通知开启;0: 通知关闭。
|
||||
// UIRemoteNotificationTypeNone = 0,
|
||||
// UIRemoteNotificationTypeBadge = 1 << 0,
|
||||
// UIRemoteNotificationTypeSound = 1 << 1,
|
||||
// UIRemoteNotificationTypeAlert = 1 << 2,
|
||||
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
|
||||
// Android: 返回值 1 代表通知启用、0: 通知关闭。
|
||||
// UIRemoteNotificationTypeNone = 0,
|
||||
// UIRemoteNotificationTypeBadge = 1 << 0,
|
||||
// UIRemoteNotificationTypeSound = 1 << 1,
|
||||
// UIRemoteNotificationTypeAlert = 1 << 2,
|
||||
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
|
||||
// Android: 返回值 1 代表通知启用;0: 通知关闭。
|
||||
JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('getUserNotificationSettings', [], successCallback)
|
||||
} else if (device.platform == 'Android') {
|
||||
} else if (device.platform === 'Android') {
|
||||
this.callNative('areNotificationEnabled', [], successCallback)
|
||||
}
|
||||
}
|
||||
@@ -108,7 +111,7 @@ JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
|
||||
// iOS methods
|
||||
|
||||
JPushPlugin.prototype.startJPushSDK = function () {
|
||||
this.callNative('startJPushSDK', [] , null)
|
||||
this.callNative('startJPushSDK', [], null)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setBadge = function (value) {
|
||||
@@ -206,17 +209,25 @@ JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
|
||||
|
||||
// Android methods
|
||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setBasicPushNotificationBuilder', [], null)
|
||||
}
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setCustomPushNotificationBuilder', [], null)
|
||||
}
|
||||
}
|
||||
|
||||
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) {
|
||||
data = JSON.stringify(data)
|
||||
console.log('JPushPlugin:receiveMessageInAndroidCallback: ' + data)
|
||||
@@ -251,14 +262,14 @@ JPushPlugin.prototype.clearNotificationById = function (id) {
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setLatestNotificationNum = function (num) {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setLatestNotificationNum', [num], null)
|
||||
}
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
|
||||
notificationID, broadcastTime, extras) {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('addLocalNotification',
|
||||
[builderId, content, title, notificationID, broadcastTime, extras], null)
|
||||
}
|
||||
@@ -281,7 +292,7 @@ JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
|
||||
*在 Portal 上展示给开发者。
|
||||
*/
|
||||
JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setStatisticsOpen', [mode], null)
|
||||
}
|
||||
}
|
||||
@@ -291,19 +302,19 @@ JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
||||
* 具体可看:http://docs.jpush.io/client/android_api/#android-60
|
||||
*/
|
||||
JPushPlugin.prototype.requestPermission = function () {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('requestPermission', [], null)
|
||||
}
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null)
|
||||
}
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) {
|
||||
if (device.platform == 'Android') {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setPushTime', [weekdays, startHour, endHour], null)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user