Merge branch 'dev'

This commit is contained in:
pikacode 2016-12-06 14:33:34 +08:00
commit 7f0eb6166d
12 changed files with 369 additions and 187 deletions

View File

@ -10,12 +10,14 @@
- [获取自定义消息内容](#获取自定义消息内容)
- [设置Badge](#设置badge)
- [本地通知](#本地通知)
- [获取本地通知内容](#获取本地通知内容)
- [页面的统计](#页面的统计)
- [日志等级设置](#日志等级设置)
- [地理位置上报](#地理位置上报)
- [设备平台判断](#设备平台判断)
- [iOS 10 进阶推送特性](#ios-10-进阶推送特性)
- [获取用户推送设置](#获取用户推送设置)
- [监听事件统一说明](#监听事件统一说明)
## 开始与停止推送服务
@ -35,7 +37,9 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
#### 接口定义
```
window.plugins.jPushPlugin.init()
```
### API - stopPush
@ -52,7 +56,10 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
#### 接口定义
```
window.plugins.jPushPlugin.resumePush()
```
### API - isPushStopped
@ -61,7 +68,9 @@ iOS平台检查推送服务是否停止。
#### 接口定义
```
window.plugins.jPushPlugin.isPushStopped(callback)
```
#### 参数说明
@ -69,6 +78,7 @@ iOS平台检查推送服务是否停止。
#### 代码示例
```js
window.plugins.jPushPlugin.isPushStopped(function(data) {
if(data > 0) {
// 已关闭
@ -76,6 +86,7 @@ iOS平台检查推送服务是否停止。
// 已开启
}
})
```
## 获取 RegistrationID
@ -90,7 +101,9 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
#### 接口定义
```js
JPushPlugin.prototype.getRegistrationID(callback)
```
#### 返回值
@ -98,9 +111,13 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
#### 调用示例
```js
window.plugins.jPushPlugin.getRegistrationID(function(data) {
console.log("JPushPlugin:registrationID is " + data)
})
```
## 别名与标签
@ -134,30 +151,34 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
#### 接口定义
```
JPushPlugin.prototype.setTagsWithAlias(tags, alias)
JPushPlugin.prototype.setTags(tags)
JPushPlugin.prototype.setAlias(alias)
```
#### 参数说明
* tags:
* 参数类型为数组。
* nil 此次调用不设置此值。
* 空集合表示取消之前的设置。
* 每次调用至少设置一个 tag覆盖之前的设置不是新增。
* 有效的标签组成:字母(区分大小写)、数字、下划线、汉字。
* 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 100 个 tag但总长度不得超过1K字节判断长度需采用UTF-8编码
* 单个设备最多支持设置 100 个 tagApp 全局 tag 数量无限制。
* alias:
* 参数类型为字符串。
* nil 此次调用不设置此值。
* 空字符串 "")表示取消之前的设置。
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
* 限制alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
- tags:
- 参数类型为数组。
- nil 此次调用不设置此值。
- 空集合表示取消之前的设置。
- 每次调用至少设置一个 tag覆盖之前的设置不是新增。
- 有效的标签组成:字母(区分大小写)、数字、下划线、汉字。
- 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 100 个 tag但总长度不得超过1K字节判断长度需采用UTF-8编码
- 单个设备最多支持设置 100 个 tagApp 全局 tag 数量无限制。
- alias:
- 参数类型为字符串。
- nil 此次调用不设置此值。
- 空字符串 "")表示取消之前的设置。
- 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
- 限制alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
#### 返回值说明
函数本身无返回值,但需要注册 `jpush.setTagsWithAlias` 事件来监听设置结果。
```js
var onTagsWithAlias = function(event) {
console.log("onTagsWithAlias")
var result = "result code:"+event.resultCode + " "
@ -166,6 +187,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
$("#tagAliasResult").html(result)
}
document.addEventListener("jpush.setTagsWithAlias", onTagsWithAlias, false)
```
#### 错误码定义
@ -181,7 +203,6 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
| 6008 | tag/alias 超出总长度限制 | 总长度最多 1K 字节。 |
| 6011 | 10s内设置tag或alias大于3次 | 短时间内操作过于频繁。 |
## 获取 APNS 推送内容
### 点击推送通知
@ -194,18 +215,23 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
- 在你需要接收通知的的 js 文件中加入:
```js
document.addEventListener("jpush.openNotification", onOpenNotification, false)
```
- onOpenNotification 需要这样写:
```js
var onOpenNotification = function(event) {
var alertContent
alertContent = event.aps.alert
alert("open Notificaiton:" + alertContent)
}
```
- event 举例:
```json
{
"aps":{
"badge":1,
@ -216,6 +242,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
"key2":"value2",
"_j_msgid":154604475
}
```
### 前台收到推送
@ -227,18 +254,23 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
- 在你需要接收通知的的 js 文件中加入:
```js
document.addEventListener("jpush.receiveNotification", onReceiveNotification, false)
```
- onReceiveNotification 需要这样写:
```js
var onReceiveNotification = function(event) {
var alertContent
alertContent = event.aps.alert
alert("open Notificaiton:" + alertContent)
}
```
- event 举例
```json
{
"aps":{
"badge":1,
@ -249,6 +281,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
"key2":"value2",
"_j_msgid":154604475
}
```
### 后台收到推送
@ -260,18 +293,24 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
- 在你需要接收通知的的 js 文件中加入:
```js
document.addEventListener("jpush.backgroundNotification", onBackgroundNotification, false)
```
- onBackgroundNotification 需要这样写:
```js
var onBackgroundNotification = function(event) {
var alertContent
alertContent = event.aps.alert
alert("open Notificaiton:" + alertContent)
}
```
+ event 举例
- event 举例
```json
{
"aps":{
"badge":1,
@ -282,6 +321,11 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
"key2":"value2",
"_j_msgid":154604475
}
```
## 获取自定义消息内容
@ -293,10 +337,13 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
- 在你需要接收通知的的 js 文件中加入:
```js
document.addEventListener("jpush.receiveMessage", onReceiveMessage, false)
```
- onReceiveMessage 需要这样写:
```js
var onReceiveMessage = function(event) {
try {
var message = event.content
@ -305,9 +352,11 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
console.log("JPushPlugin:onReceiveMessage-->" + exception);
}
}
```
- event 举例:
```json
{
"content":"今天去哪儿",
"extras":
@ -315,31 +364,40 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
"key":"不填写没有"
}
}
```
## 设置Badge
### API - setBadge, resetBadge
JPush 封装 badge 功能,允许应用上传 badge 值至 JPush 服务器,由 JPush 后台帮助管理每个用户所对应的推送 badge 值,简化了设置推送 badge 的操作。
(本接口不会直接改变应用本地的角标值. 要修改本地 badege 值,使用 setApplicationIconBadgeNumber
实际应用中,开发者可以直接对 badge 值做增减操作,无需自己维护用户与 badge 值之间的对应关系。
#### 接口定义
```js
window.plugins.jPushPlugin.prototype.setBadge(value)
window.plugins.jPushPlugin.prototype.reSetBadge()
```
resetBadge 相当于 setBadge(0)。
#### 参数说明
value 取值范围:[0,99999]。
#### 返回值
无,控制台会有 log 打印设置结果。
#### 代码示例
```js
window.plugins.jPushPlugin.setBadge(5)
window.plugins.jPushPlugin.reSetBadge()
```
### API - setApplicationIconBadgeNumber
@ -347,7 +405,9 @@ value 取值范围:[0,99999]。
#### 接口定义
```js
window.plugins.jPushPlugin.prototype.setApplicationIconBadgeNumber(badge)
```
#### 参数说明
@ -355,7 +415,9 @@ value 取值范围:[0,99999]。
#### 代码示例
```
window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0)
```
### API - getApplicationIconBadgeNumber
@ -363,7 +425,9 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.getApplicationIconBadgeNumber(callback)
```
#### 参数说明
@ -371,10 +435,11 @@ value 取值范围:[0,99999]。
#### 代码示例
```js
window.plugins.jPushPlugin.getApplicationIconBadgeNumber(function(data) {
console.log(data)
})
```
## 本地通知
@ -384,7 +449,9 @@ value 取值范围:[0,99999]。
#### 接口定义
```js
window.plugins.jPushPlugin.prototype.addLocalNotificationForIOS(delayTime, content, badge, notificationID, extras)
```
#### 参数说明
@ -396,7 +463,9 @@ value 取值范围:[0,99999]。
#### 代码示例
window.plugins.jPushPlugin.addLocalNotificationForIOS(6*60*60, "本地推送内容", 1, "notiId", {"key":"value"});
```js
window.plugins.jPushPlugin.addLocalNotificationForIOS(24*60*60, "本地推送内容", 1, "notiId", {"key":"value"});
```
### API - deleteLocalNotificationWithIdentifierKeyInIOS
@ -404,7 +473,9 @@ value 取值范围:[0,99999]。
#### 接口定义
```js
window.plugins.jPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey)
```
#### 参数说明
@ -412,7 +483,9 @@ value 取值范围:[0,99999]。
#### 代码示例
```
window.plugins.jPushPlugin.deleteLocalNotificationWithIdentifierKeyInIOS("identifier")
```
### API - clearAllLocalNotifications
@ -420,11 +493,36 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.clearAllLocalNotifications()
```
#### 代码示例
```
window.plugins.jPushPlugin.clearAllLocalNotifications()
```
## 获取本地通知内容
### iOS 10 before 收到本地通知
监听 `jpush.receiveLocalNotification` 事件获取「App 在后台时点击通知横幅」或「App 在前台时收到」均会触发该事件。
### iOS 10 收到本地通知
监听 [jpush.receiveNotification](#前台收到推送)、[jpush.openNotification](点击推送通知),获取推送内容后,通过获取到的 `__JPUSHNotificationKey` 字段([本地通知](#本地通知) 设置的 `notificationID`)来判断是本地通知,并处理。
### 点击本地通知横幅启动 App
监听 `jpush.startLocalNotification` 事件。
## 页面的统计
@ -436,9 +534,11 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.startLogPageView(pageName)
window.plugins.jPushPlugin.prototype.stopLogPageView(pageName)
window.plugins.jPushPlugin.prototype.beginLogPageView(pageName, duration)
```
#### 参数说明
@ -446,16 +546,18 @@ value 取值范围:[0,99999]。
- duration: 自定义的页面时间
#### 调用说明
应在所有的需要统计得页面得 viewWillAppear 和 viewWillDisappear 加入 startLogPageView 和 stopLogPageView 来统计当前页面的停留时间。
或者直接使用 beginLogPageView 来自定义加入页面和时间信息。
#### 代码示例
```
window.plugins.jPushPlugin.beginLogPageView("newPage", 5);
window.plugins.jPushPlugin.startLogPageView("onePage");
window.plugins.jPushPlugin.stopLogPageView("onePage");
```
## 日志等级设置
@ -467,11 +569,15 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.setDebugModeFromIos()
```
#### 代码示例
```
window.plugins.jPushPlugin.setDebugModeFromIos();
```
### API - setLogOFF
@ -481,11 +587,15 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.setLogOFF()
```
#### 代码示例
```
window.plugins.jPushPlugin.setLogOFF();
```
### API - setCrashLogON
@ -495,11 +605,15 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.setCrashLogON()
```
#### 代码示例
```
window.plugins.jPushPlugin.setCrashLogON();
```
## 地理位置上报
@ -509,7 +623,9 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.setLocation(latitude, longitude)
```
#### 参数说明
@ -518,7 +634,9 @@ value 取值范围:[0,99999]。
#### 代码示例
```
window.plugins.jPushPlugin.setLocation(39.26,115.25);
```
## 设备平台判断
@ -528,15 +646,19 @@ value 取值范围:[0,99999]。
#### 接口定义
```
window.plugins.jPushPlugin.prototype.isPlatformIOS()
```
#### 代码示例
```js
if(window.plugins.jPushPlugin.isPlatformIOS()) {
// iOS
} else {
// Android
}
```
@ -577,7 +699,7 @@ window.plugins.jPushPlugin.prototype.addDismissActions(actions, categoryId);
#### 代码示例
```
```js
window.plugins.jPushPlugin.addDismissActions([{"title":"t1", "identifier":"id1", "option":"0"}, {"title":"t2", "identifier":"id2", "option":"3", "type":"textInput", "textInputButtonTitle":"回复", "textInputPlaceholder":"点此输入回复内容"}], "categoryId_t1_t2");
```
@ -649,8 +771,6 @@ window.plugins.jPushPlugin.prototype.addNotificationActions(actions, categoryId)
7. 立即发送。
## 获取用户推送设置
### API - getUserNotificationSettings
@ -684,3 +804,55 @@ window.plugins.jPushPlugin.prototype.getUserNotificationSettings(callback)
- UNAlertStyleNone = 0
- UNAlertStyleBanner = 1
- UNAlertStyleAlert = 2
## 监听事件统一说明
可在 js 监听全部事件如下:
##### jpush.receiveNotification
> [前台收到远程通知](#前台收到推送)
>
> [iOS 10 前台收到本地通知](#ios-10-收到本地通知)
##### jpush.openNotification
> [点击远程通知横幅使 App「进入前台」或「启动」](#点击推送通知)
>
> [iOS 10 点击本地通知横幅使 App「进入前台」或「启动」](#ios-10-收到本地通知)
##### jpush.backgroundNotification
> [iOS 7 以后后台收到远程通知](#后台收到推送)
##### jpush.setTagsWithAlias
> [设置标签别名回调](#返回值说明)
##### jpush.receiveMessage
> [获取自定义消息内容](#获取自定义消息内容)
##### jpush.startLocalNotification
> [点击本地通知横幅启动 App](#点击本地通知横幅启动-app)
##### jpush.receiveLocalNotification
> [iOS 10 before 收到本地通知](#ios-10-before-收到本地通知)

View File

@ -1,6 +1,8 @@
## iOS 手动安装
不建议使用手动安装,请参照 README.md 进行自动安装。
> **不建议使用手动安装,请参照 README.md 进行自动安装。**
1. 下载 JPush PhoneGap Plugin 插件,并解压
2. 将 [/src/ios](/src/ios) 文件夹及内容在 xcode 中拖到你的工程里,并配置 [/src/ios/PushConfig.plist](/src/ios/PushConfig.plist) 中相应参数:

View File

@ -88,7 +88,7 @@
var initiateUI = function() {
try {
window.plugins.jPushPlugin.init();
getRegistrationID();
window.setTimeout(getRegistrationID, 1000);
if (device.platform != "Android") {
window.plugins.jPushPlugin.setDebugModeFromIos();
window.plugins.jPushPlugin.setApplicationIconBadgeNumber(0);

View File

@ -30,14 +30,17 @@
</feature>
</config-file>
<header-file src="src/ios/Plugins/JPushDefine.h" />
<header-file src="src/ios/Plugins/JPushPlugin.h" />
<source-file src="src/ios/Plugins/JPushPlugin.m" />
<header-file src="src/ios/Plugins/JPushDefine.h" />
<header-file src="src/ios/Plugins/AppDelegate+JPush.h" />
<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-2.2.0.a" framework="true" />
<source-file src="src/ios/lib/jpush-ios-3.0.0.a" framework="true" />
<source-file src="src/ios/lib/jcore-ios-1.0.0.a" framework="true" />
<resource-file src="src/ios/PushConfig.plist" />
<framework src="CFNetwork.framework" weak="true" />
<framework src="CoreFoundation.framework" weak="true" />
<framework src="CoreTelephony.framework" weak="true" />

View File

@ -2,7 +2,7 @@
// AppDelegate+JPush.h
// delegateExtention
//
// Created by pikacode@qq.com on 15/8/3.
// Created by 张庆贺 on 15/8/3.
// Copyright (c) 2015年 JPush. All rights reserved.
//

View File

@ -2,7 +2,7 @@
// AppDelegate+JPush.m
// delegateExtention
//
// Created by pikacode@qq.com on 15/8/3.
// Created by on 15/8/3.
// Copyright (c) 2015 JPush. All rights reserved.
//
@ -28,8 +28,6 @@
return [self init_plus];
}
-(void)applicationDidLaunch:(NSNotification *)notification{
if (notification) {
if (notification.userInfo) {
@ -39,7 +37,7 @@
}
NSDictionary *userInfo2 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (userInfo2.count > 0) {
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_OpenLocalNotification jsString:[userInfo1 toJsonString]];
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_StartLocalNotification jsString:[userInfo1 toJsonString]];
}
}
[JPUSHService setDebugMode];
@ -91,7 +89,7 @@
eventName = JPushDocumentEvent_ReceiveNotification;
break;
case UIApplicationStateBackground:
eventName = JPushDocumentEvent_BackgoundNotification;
eventName = JPushDocumentEvent_BackgroundNotification;
break;
default:
break;
@ -117,7 +115,7 @@
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
// [[NSNotificationCenter defaultCenter] postNotificationName:kJPushPluginReceiveLocalNotification object:notification.userInfo];
[[NSNotificationCenter defaultCenter] postNotificationName:JPushDocumentEvent_ReceiveLocalNotification object:notification.userInfo];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {

View File

@ -2,7 +2,7 @@
// ConstantDef.h
// jmessage
//
// Created by pikacode@qq.com on 16/1/19.
// Created by ljg on 16/1/19.
//
//
@ -23,9 +23,10 @@ static NSString *const JPushConfig_FileName = @"PushConfig";
static NSString *const JPushDocumentEvent_ReceiveNotification = @"receiveNotification";
static NSString *const JPushDocumentEvent_OpenNotification = @"openNotification";
static NSString *const JPushDocumentEvent_BackgoundNotification = @"backgoundNotification";
static NSString *const JPushDocumentEvent_BackgroundNotification = @"backgroundNotification";
static NSString *const JPushDocumentEvent_SetTagsWithAlias = @"setTagsWithAlias";
static NSString *const JPushDocumentEvent_ReceiveMessage = @"receiveMessage";
static NSString *const JPushDocumentEvent_OpenLocalNotification = @"openLocalNotification";
static NSString *const JPushDocumentEvent_StartLocalNotification = @"startLocalNotification";
static NSString *const JPushDocumentEvent_ReceiveLocalNotification = @"receiveLocalNotification";

View File

@ -2,7 +2,7 @@
// PushTalkPlugin.h
// PushTalk
//
// Created by pikacode@qq.com on 13-12-13.
// Created by zhangqinghe on 13-12-13.
//
//

View File

@ -2,7 +2,7 @@
// PushTalkPlugin.m
// PushTalk
//
// Created by pikacode@qq.com on 13-12-13.
// Created by zhangqinghe on 13-12-13.
//
//
@ -164,7 +164,7 @@
NSNumber *badge = [command argumentAtIndex:2];
NSString *idKey = [command argumentAtIndex:3];
NSDictionary *dict = [command argumentAtIndex:4];
[JPUSHService setLocalNotification:date alertBody:alert badge:badge alertAction:nil identifierKey:idKey userInfo:dict soundName:nil];
[JPUSHService setLocalNotification:date alertBody:alert badge:badge.intValue alertAction:nil identifierKey:idKey userInfo:dict soundName:nil];
}
-(void)deleteLocalNotificationWithIdentifierKey:(CDVInvokedUrlCommand*)command{
@ -266,7 +266,7 @@
NSNumber *isIDFA = [plistData valueForKey:JPushConfig_IsIDFA];
NSString *advertisingId = nil;
if(isIDFA){
if(isIDFA.boolValue){
advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
}
[JPUSHService setupWithOption:userInfo

View File

@ -9,7 +9,7 @@
* Copyright (c) 2011 ~ 2015 Shenzhen HXHG. All rights reserved.
*/
#define JPUSH_VERSION_NUMBER 2.2.0
#define JPUSH_VERSION_NUMBER 3.0.0
#import <Foundation/Foundation.h>
@ -31,6 +31,13 @@ extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功
extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS)
extern NSString *const kJPFServiceErrorNotification; // 错误提示
typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
JPAuthorizationOptionNone = 0, // the application may not present any UI upon a notification being received
JPAuthorizationOptionBadge = (1 << 0), // the application may badge its icon upon a notification being received
JPAuthorizationOptionSound = (1 << 1), // the application may play a sound upon a notification being received
JPAuthorizationOptionAlert = (1 << 2), // the application may display an alert upon a notification being received
};
/*!
*
*/
@ -186,7 +193,7 @@ extern NSString *const kJPFServiceErrorNotification; // 错误提示
/*!
*
* ()nilhttp://docs.jiguang.cn/client/ios_api/#api-ios
* ()nilhttps://docs.jiguang.cn/jpush/client/iOS/ios_api/
* setTags:alias:fetchCompletionHandle:block里面处理设置结果即可.
* WARN: 使block时需要注意循环引用问题
*/
@ -243,7 +250,7 @@ callbackSelector:(SEL)cbSelector
+ (void)stopLogPageView:(NSString *)pageName;
/*!
* @abstract
* @abstract
*
* @param pageName
* @param seconds
@ -364,7 +371,6 @@ callbackSelector:(SEL)cbSelector
* @abstract
*
* @param notificationKey
* @param myUILocalNotification
* @discussion [removeNotification:]
*/
+ (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));

Binary file not shown.