diff --git a/.cursor/commands/update_sdk.md b/.cursor/commands/update_sdk.md new file mode 100644 index 0000000..0180e7b --- /dev/null +++ b/.cursor/commands/update_sdk.md @@ -0,0 +1,150 @@ +# 更新 SDK + +根据**输入的需要更新的 SDK 版本号**,同时更新本插件的 **iOS** 与 **Android** 依赖。本插件 Android 使用 Maven 集成、iOS 使用 CocoaPods 集成,无需下载或替换本地 SDK 包,只需在 `plugin.xml` 中修改两端的依赖版本号。 + +## 输入 + +执行本命令时请提供**目标 SDK 版本号**(如 `5.9.1`、`6.0.0`)。该版本号将用于: +- **iOS**:CocoaPods 的 JPush pod 版本(`plugin.xml` 中的 `spec`) +- **Android**:Maven 的 `cn.jiguang.sdk:jpush` 版本(`plugin.xml` 中的 `framework src`) + +若 iOS 与 Android 官方发布的版本号不一致,请分别说明「iOS 目标版本」与「Android 目标版本」。 + +## 更新步骤 + +### 1. 更新 iOS SDK 版本(CocoaPods) + +根据输入的版本号,在 `plugin.xml` 的 iOS 平台下修改 `` 中的版本号。 + +**位置**:约第 51–55 行,`` 内。 + +**示例**: +```xml + + +``` + +**说明**:CocoaPods 上 JPush 官方 pod 的版本以 [CocoaPods JPush](https://cocoapods.org/pods/jpush) 为准。修改后执行 `cordova build ios` 或进入 `platforms/ios` 执行 `pod install` 即可拉取对应版本。 + +### 2. 更新 Android SDK 版本(Maven) + +根据输入的版本号,在 `plugin.xml` 的 Android 平台下修改 `` 中的版本号。 + +**位置**:约第 252–253 行。 + +**示例**: +```xml + + +``` + +**说明**:依赖从 Maven Central 拉取,无需替换本地 jar。修改后执行 `cordova build android` 即可使用新版本。 + +### 3. 查找 SDK 新增 API + +**⚠️ 重要:必须逐项查看更新日志,不要因为看到「更新各厂商 SDK」等描述就跳过新增 API 的检查。** + +执行本步时按文末「文档内容获取方式」获取下方更新日志页面的内容,逐条阅读,不要仅依赖网页搜索。 + +#### Android SDK +- 访问 [极光推送 Android SDK 更新日志](https://docs.jiguang.cn/jpush/jpush_changelog/updates_Android) 查找目标版本的新增对外 API。 +- **检查方法**: + 1. 找到目标版本(如 5.9.0)的更新内容。 + 2. **逐条阅读**每一条,不要跳过。 + 3. 重点看包含「新增」「新增接口」「新增 API」「新增方法」或 Java 方法签名的条目。 + 4. 对每个疑似新增 API,记录:方法名、完整方法签名、功能说明。 +- 在 [Android SDK API 文档](https://docs.jiguang.cn/jpush/client/Android/android_api) 中确认用法、参数和示例。 + +#### iOS SDK +- 访问 [极光推送 iOS SDK 更新说明](https://docs.jiguang.cn/jpush/jpush_changelog/updates_iOS) 查找目标版本的新增对外 API。 +- **检查方法**: + 1. 找到目标版本的更新内容。 + 2. **逐条阅读**每一条。 + 3. 重点看包含「新增」「新增接口」「新增 API」或 Objective-C 方法签名的条目。 + 4. 对每个疑似新增 API,记录:方法名、完整方法签名、功能说明。 +- 在 [iOS SDK API 文档](https://docs.jiguang.cn/jpush/client/iOS/ios_api) 中确认用法、参数和示例。 + +**检查清单**(完成后勾选): +- [ ] 已找到目标版本的更新日志 +- [ ] 已逐条阅读所有更新内容(含次要更新) +- [ ] 已识别所有含「新增」「API」「接口」「方法」等的条目 +- [ ] 已记录所有新增 API 的方法名和签名 +- [ ] 已在对应平台 API 文档中确认每个新增 API 的用法 +- [ ] 已区分「需在插件中封装的对外 API」与「仅内部实现、无需封装」的更新 + +**常见误区**: +- ❌ 看到「更新各厂商 SDK」就认为没有新增 API → ✅ 仍要逐条检查 +- ❌ 只扫一眼主要更新 → ✅ 必须逐条检查 +- ❌ 靠搜索判断有没有新增 API → ✅ 以官方更新日志为准 +- ❌ 文档有缺字/错字时直接忽略 → ✅ 需到官方文档核实 + +### 4. 封装新增 API(如有) + +**⚠️ 若无新增 API,需明确写「经检查,该版本无新增对外 API」,再跳过本步。** + +若有新增 API,需在插件中封装: +- 在 `www/JPushPlugin.js` 中增加 JavaScript 接口 +- 在 `src/android/JPushPlugin.java` 中实现 Android 逻辑 +- 在 `src/ios/Plugins/JPushPlugin.m` 或 `AppDelegate+JPush.m` 中实现 iOS 逻辑 + +**封装原则**: +- Android 与 iOS 为同一功能时,封装为一个插件方法 +- 不同功能分别封装 +- **直接调用 SDK API,不要用反射** +- 若无新增 API,**必须写明「已检查并确认无新增 API」后跳过** + +**封装步骤**: +1. 确认 API 的完整签名与参数类型 +2. 确认调用时机(是否需在 init 之前调用) +3. 在对应平台实现 +4. 在 JS 层增加方法,风格与现有 API 一致 +5. 补充必要的错误处理与日志 + +### 5. 更新 API 文档 + +若新增了插件方法,需更新文档: +- `doc/Common_detail_api.md`:通用或跨平台方法 +- `doc/Android_detail_api.md`:仅 Android 方法 +- `doc/iOS_API.md`:仅 iOS 方法 + +若无新增方法,跳过此步。 + +### 6. 在 example/index.html 中添加示例(若有新增 API) + +**若有新增插件方法**,需在示例工程中增加可操作示例,便于开发者验证与参考: + +- 在 `example/index.html` 中为每个新增 API 增加: + 1. **按钮**:在合适位置的 `
` 中增加 ``(id 与 API 含义对应)。 + 2. **点击逻辑**:在 `initiateUI` 内用 `$("#xxx").click(...)` 调用 `window.JPush.新方法(...)`,在回调中用 `alert` 或 `$("#某结果区").html(...)` 展示结果。 + 3. 若有结果展示,可复用已有结果区域或新增 `
+
+ +
+
@@ -299,6 +313,10 @@
+
+ + +
diff --git a/ionic/index.ts b/ionic/index.ts index 0da14e7..d3a0ae9 100644 --- a/ionic/index.ts +++ b/ionic/index.ts @@ -47,6 +47,9 @@ export class JPush extends IonicNativePlugin { @Cordova() isPushStopped(): Promise { return; } + @Cordova() + getPushStatus(): Promise<{ code: number; isStopped: 0 | 1 }> { return; } + @Cordova() setTags(params: TagOptions): Promise { return; } diff --git a/ionic/jpush/index.d.ts b/ionic/jpush/index.d.ts index e74dbc6..e958ec3 100644 --- a/ionic/jpush/index.d.ts +++ b/ionic/jpush/index.d.ts @@ -42,6 +42,8 @@ export declare class JPushOriginal extends IonicNativePlugin { stopPush(): Promise; resumePush(): Promise; isPushStopped(): Promise; + /** 检查推送是否被停止(SDK 6.0+ 推荐),返回 { code: number, isStopped: 0|1 }。isStopped 仅在 code 为 0 时有效 */ + getPushStatus(): Promise<{ code: number; isStopped: 0 | 1 }>; setTags(params: TagOptions): Promise; addTags(params: TagOptions): Promise; deleteTags(params: TagOptions): Promise; diff --git a/ionic/jpush/index.js b/ionic/jpush/index.js index 0e1c15e..34ada8f 100644 --- a/ionic/jpush/index.js +++ b/ionic/jpush/index.js @@ -24,6 +24,7 @@ var JPushOriginal = /** @class */ (function (_super) { JPushOriginal.prototype.stopPush = function () { return cordova(this, "stopPush", {}, arguments); }; JPushOriginal.prototype.resumePush = function () { return cordova(this, "resumePush", {}, arguments); }; JPushOriginal.prototype.isPushStopped = function () { return cordova(this, "isPushStopped", {}, arguments); }; + JPushOriginal.prototype.getPushStatus = function () { return cordova(this, "getPushStatus", {}, arguments); }; JPushOriginal.prototype.setTags = function (params) { return cordova(this, "setTags", {}, arguments); }; JPushOriginal.prototype.addTags = function (params) { return cordova(this, "addTags", {}, arguments); }; JPushOriginal.prototype.deleteTags = function (params) { return cordova(this, "deleteTags", {}, arguments); }; diff --git a/ionic/jpush/ngx/index.d.ts b/ionic/jpush/ngx/index.d.ts index 7aaabf5..e8fb772 100644 --- a/ionic/jpush/ngx/index.d.ts +++ b/ionic/jpush/ngx/index.d.ts @@ -42,6 +42,8 @@ export declare class JPush extends IonicNativePlugin { stopPush(): Promise; resumePush(): Promise; isPushStopped(): Promise; + /** isStopped 仅在 code 为 0 时有效 */ + getPushStatus(): Promise<{ code: number; isStopped: 0 | 1 }>; setTags(params: TagOptions): Promise; addTags(params: TagOptions): Promise; deleteTags(params: TagOptions): Promise; diff --git a/ionic/jpush/ngx/index.js b/ionic/jpush/ngx/index.js index 01cc8b1..2a0fb87 100644 --- a/ionic/jpush/ngx/index.js +++ b/ionic/jpush/ngx/index.js @@ -42,6 +42,7 @@ var JPush = /** @class */ (function (_super) { JPush.prototype.stopPush = function () { return cordova(this, "stopPush", {}, arguments); }; JPush.prototype.resumePush = function () { return cordova(this, "resumePush", {}, arguments); }; JPush.prototype.isPushStopped = function () { return cordova(this, "isPushStopped", {}, arguments); }; + JPush.prototype.getPushStatus = function () { return cordova(this, "getPushStatus", {}, arguments); }; JPush.prototype.setTags = function (params) { return cordova(this, "setTags", {}, arguments); }; JPush.prototype.addTags = function (params) { return cordova(this, "addTags", {}, arguments); }; JPush.prototype.deleteTags = function (params) { return cordova(this, "deleteTags", {}, arguments); }; diff --git a/package.json b/package.json index b11a354..d2deb53 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jpush-phonegap-plugin", - "version": "5.9.0", + "version": "6.0.1", "description": "JPush for cordova plugin", "cordova": { "id": "jpush-phonegap-plugin", diff --git a/plugin.xml b/plugin.xml index 19e3d23..3051de4 100644 --- a/plugin.xml +++ b/plugin.xml @@ -1,8 +1,9 @@ + version="6.0.1"> JPush JPush for cordova plugin @@ -48,7 +49,12 @@ - + + + + + + @@ -72,6 +78,11 @@ + + + + + @@ -113,58 +124,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -178,35 +137,7 @@ - - - - - - - - - - - - - - - - - - - - - + @@ -233,9 +164,9 @@ - - - + + + - + + diff --git a/src/android/JPushEventReceiver.java b/src/android/JPushEventReceiver.java index c05e337..a8d5bf7 100644 --- a/src/android/JPushEventReceiver.java +++ b/src/android/JPushEventReceiver.java @@ -15,6 +15,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; +import cn.jpush.android.api.CmdMessage; import cn.jpush.android.api.CustomMessage; import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.JPushMessage; @@ -86,6 +87,17 @@ public class JPushEventReceiver extends JPushMessageReceiver { cn.jiguang.cordova.push.JPushPlugin.transmitReceiveRegistrationId(regId); } + @Override + public void onCommandResult(Context context, CmdMessage cmdMessage) { + super.onCommandResult(context, cmdMessage); + if (cmdMessage == null) return; + // cmd 2003: getPushStatus / isPushStopped 状态回调。errorCode: 0=未停止, 1=已停止, 其他=异常 + if (cmdMessage.cmd == 2003) { + cn.jiguang.cordova.push.JLogger.d(TAG, "[onCommandResult] getPushStatus, errorCode=" + cmdMessage.errorCode); + cn.jiguang.cordova.push.JPushPlugin.onGetPushStatusResult(cmdMessage.errorCode); + } + } + @Override public void onMessage(Context context, CustomMessage customMessage) { // super.onMessage(context,customMessage); diff --git a/src/android/JPushPlugin.java b/src/android/JPushPlugin.java index a195c78..5e1c06e 100644 --- a/src/android/JPushPlugin.java +++ b/src/android/JPushPlugin.java @@ -50,6 +50,9 @@ public class JPushPlugin extends CordovaPlugin { static Map eventCallbackMap = new HashMap(); + /** getPushStatus 异步结果通过 JPushMessageReceiver.onCommandResult(cmd==2003) 回调,此处暂存 CallbackContext */ + static CallbackContext getPushStatusCallbackContext; + public JPushPlugin() { instance = this; } @@ -329,6 +332,35 @@ public class JPushPlugin extends CordovaPlugin { } } + void getPushStatus(JSONArray data, CallbackContext callbackContext) { + getPushStatusCallbackContext = callbackContext; + JPushInterface.getPushStatus(mContext); + // 结果在 JPushEventReceiver.onCommandResult 中当 cmd==2003 时回调 + } + + /** + * 由 JPushEventReceiver.onCommandResult 在 cmd==2003 时调用,传递 getPushStatus 异步结果。 + * 与 iOS 对齐:code=0 表示成功,非 0 表示错误码;isStopped=0 未停止,1 已停止。 + * Android errorCode: 0=未停止, 1=已停止, 其他=异常。 + */ + static void onGetPushStatusResult(int errorCode) { + if (getPushStatusCallbackContext == null) return; + try { + JSONObject result = new JSONObject(); + if (errorCode == 0 || errorCode == 1) { + result.put("code", 0); + result.put("isStopped", errorCode == 1 ? 1 : 0); + } else { + result.put("code", errorCode); + result.put("isStopped", 0); + } + getPushStatusCallbackContext.success(result); + } catch (JSONException e) { + getPushStatusCallbackContext.error("getPushStatus result error"); + } + getPushStatusCallbackContext = null; + } + void areNotificationEnabled(JSONArray data, final CallbackContext callback) { int isEnabled; if (hasPermission("OP_POST_NOTIFICATION")) { diff --git a/src/android/libs/jpush-android-5.9.0.jar b/src/android/libs/jpush-android-5.9.0.jar deleted file mode 100644 index 6568682..0000000 Binary files a/src/android/libs/jpush-android-5.9.0.jar and /dev/null differ diff --git a/src/ios/Plugins/JPushPlugin.h b/src/ios/Plugins/JPushPlugin.h index 17c68b0..fe3230f 100644 --- a/src/ios/Plugins/JPushPlugin.h +++ b/src/ios/Plugins/JPushPlugin.h @@ -52,6 +52,8 @@ static NSMutableDictionary *_jpushEventCache; -(void)stopPush:(CDVInvokedUrlCommand*)command; -(void)resumePush:(CDVInvokedUrlCommand*)command; -(void)isPushStopped:(CDVInvokedUrlCommand*)command; +// 检查推送是否被停止(iOS 6.0.0+ 推荐,替代 isPushStopped) +-(void)getPushStatus:(CDVInvokedUrlCommand*)command; //开关日志 -(void)setDebugModeFromIos:(CDVInvokedUrlCommand*)command; diff --git a/src/ios/Plugins/JPushPlugin.m b/src/ios/Plugins/JPushPlugin.m index 0367135..80bc9ea 100644 --- a/src/ios/Plugins/JPushPlugin.m +++ b/src/ios/Plugins/JPushPlugin.m @@ -48,6 +48,18 @@ [self handleResultWithValue:result command:command]; } +-(void)getPushStatus:(CDVInvokedUrlCommand*)command{ + WEAK_SELF(weakSelf) + [JPUSHService getPushStatus:^(NSInteger iResCode, BOOL isStopped) { + NSDictionary *result = @{ + @"code": @(iResCode), + @"isStopped": isStopped ? @1 : @0 + }; + CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:result]; + [weakSelf.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + }]; +} + -(void)initial:(CDVInvokedUrlCommand*)command{ //do nithng,because Cordova plugin use lazy load mode. } diff --git a/src/ios/lib/jpush-ios-5.9.0.xcframework/Info.plist b/src/ios/lib/jpush-ios-5.9.0.xcframework/Info.plist deleted file mode 100644 index 531cf95..0000000 --- a/src/ios/lib/jpush-ios-5.9.0.xcframework/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - AvailableLibraries - - - HeadersPath - Headers - LibraryIdentifier - ios-arm64_x86_64-simulator - LibraryPath - libJPush.a - SupportedArchitectures - - arm64 - x86_64 - - SupportedPlatform - ios - SupportedPlatformVariant - simulator - - - HeadersPath - Headers - LibraryIdentifier - ios-arm64 - LibraryPath - libJPush.a - SupportedArchitectures - - arm64 - - SupportedPlatform - ios - - - CFBundlePackageType - XFWK - XCFrameworkFormatVersion - 1.0 - - diff --git a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/Headers/JPUSHService.h b/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/Headers/JPUSHService.h deleted file mode 100644 index 5752e8a..0000000 --- a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/Headers/JPUSHService.h +++ /dev/null @@ -1,1011 +0,0 @@ -/* - * | | | | \ \ / / | | | | / _______| - * | |____| | \ \/ / | |____| | / / - * | |____| | \ / | |____| | | | _____ - * | | | | / \ | | | | | | |____ | - * | | | | / /\ \ | | | | \ \______| | - * | | | | /_/ \_\ | | | | \_________| - * - * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved. - */ - -#define JPUSH_VERSION_NUMBER 5.9.0 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class CLRegion; -@class UILocalNotification; -@class CLLocation; -@class UNNotificationCategory; -@class UNNotificationSettings; -@class UNNotificationRequest; -@class UNNotification; -@class UIView; -@protocol JPUSHRegisterDelegate; -@protocol JPUSHGeofenceDelegate; -@protocol JPUSHNotiInMessageDelegate; -@protocol JPUSHInAppMessageDelegate; - -typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq); -typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq, BOOL isBind); -typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *_Nullable iAlias, NSInteger seq); -typedef void (^JPUSHPropertiesOperationCompletion)(NSInteger iResCode, NSDictionary *_Nullable properties, NSInteger seq); -typedef void (^JPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *_Nullable iLiveActivityId, NSData * _Nullable pushToken, NSInteger seq); - -extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中 -extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接 -extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接 -extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功 -extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败 -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 - JPAuthorizationOptionCarPlay = (1 << 3), // The ability to display notifications in a CarPlay environment. - JPAuthorizationOptionCriticalAlert NS_AVAILABLE_IOS(12.0) = (1 << 4) , //The ability to play sounds for critical alerts. - JPAuthorizationOptionProvidesAppNotificationSettings NS_AVAILABLE_IOS(12.0) = (1 << 5) , //An option indicating the system should display a button for in-app notification settings. - JPAuthorizationOptionProvisional NS_AVAILABLE_IOS(12.0) = (1 << 6) , //The ability to post noninterrupting notifications provisionally to the Notification Center. - JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods. -}; - -typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) { - JPAuthorizationNotDetermined = 0, // The user has not yet made a choice regarding whether the application may post user notifications. - JPAuthorizationStatusDenied, // The application is not authorized to post user notifications. - JPAuthorizationStatusAuthorized, // The application is authorized to post user notifications. - JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0), // The application is authorized to post non-interruptive user notifications. -}; - -/*! - * 通知注册实体类 - */ -@interface JPUSHRegisterEntity : NSObject - -/*! - * 支持的类型 - * badge,sound,alert - */ -@property (nonatomic, assign) NSInteger types; -/*! - * 注入的类别 - * iOS10 UNNotificationCategory - * iOS8-iOS9 UIUserNotificationCategory - */ -@property (nonatomic, strong, nullable) NSSet *categories; -@end - -/*! - * 进行删除、查找推送实体类 - */ -@interface JPushNotificationIdentifier : NSObject - -@property (nonatomic, copy, nullable) NSArray * identifiers; // 推送的标识数组 -@property (nonatomic, copy, nullable) UILocalNotification * notificationObj NS_DEPRECATED_IOS(4_0, 10_0); // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效 -@property (nonatomic, assign) BOOL delivered NS_AVAILABLE_IOS(10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的 -@property (nonatomic, copy, nullable) void (^findCompletionHandler)(NSArray * _Nullable results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组) - -@end - -/*! - * 推送通知声音实体类 - * iOS10以上有效 - */ -@interface JPushNotificationSound : NSObject -@property (nonatomic, copy, nullable) NSString *soundName; //普通通知铃声 -@property (nonatomic, copy, nullable) NSString *criticalSoundName NS_AVAILABLE_IOS(12.0); //警告通知铃声 -@property (nonatomic, assign) float criticalSoundVolume NS_AVAILABLE_IOS(12.0); //警告通知铃声音量,有效值在0~1之间,默认为1 -@end - - -/*! - * 推送内容实体类 - */ -@interface JPushNotificationContent : NSObject - -@property (nonatomic, copy) NSString *title; // 推送标题 -@property (nonatomic, copy) NSString *subtitle; // 推送副标题 -@property (nonatomic, copy) NSString *body; // 推送内容 -@property (nonatomic, copy, nullable) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1) -@property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效) -@property (nonatomic, copy) NSString *categoryIdentifier; // 行为分类标识 -@property (nonatomic, copy) NSDictionary *userInfo; // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo -@property (nonatomic, copy, nullable) NSString *sound; // 声音名称,不设置则为默认声音 -@property (nonatomic, copy, nullable) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0); //推送声音实体 -@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型 -@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组 -@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到 -@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。 -@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。 -@property (nonatomic, copy, nullable) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification. -//iOS15以上的新增属性 interruptionLevel为枚举UNNotificationInterruptionLevel -// The interruption level determines the degree of interruption associated with the notification -@property (nonatomic, assign) NSUInteger interruptionLevel NS_AVAILABLE_IOS(15.0); -// Relevance score determines the sorting for the notification across app notifications. The expected range is between 0.0f and 1.0f. -@property (nonatomic, assign) double relevanceScore NS_AVAILABLE_IOS(15.0); -// iOS16以上的新增属性 -@property (nonatomic, copy, nullable) NSString * filterCriteria NS_AVAILABLE_IOS(16.0); // default nil - -@end - - -/*! - * 推送触发方式实体类 - * 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数 - */ -@interface JPushNotificationTrigger : NSObject - -@property (nonatomic, assign) BOOL repeat; // 设置是否重复,默认为NO -@property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0); // 用来设置触发推送的时间,iOS10以上无效 -@property (nonatomic, copy) CLRegion *region NS_AVAILABLE_IOS(8_0); // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权 -@property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II -@property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的时间,iOS10以上有效,优先级为III - -@end - -/*! - * 注册或更新推送实体类 - */ -@interface JPushNotificationRequest : NSObject - -@property (nonatomic, copy) NSString *requestIdentifier; // 推送请求标识 -@property (nonatomic, copy) JPushNotificationContent *content; // 设置推送的具体内容 -@property (nonatomic, copy) JPushNotificationTrigger *trigger; // 设置推送的触发方式 -@property (nonatomic, copy, nullable) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil - -@end - - -/*! - * 应用内消息内容实体 - */ -@interface JPushInAppMessage : NSObject - -@property (nonatomic, copy) NSString *mesageId; // 消息id -@property (nonatomic, copy) NSString *title; // 标题 -@property (nonatomic, copy) NSString *content; // 内容 -@property (nonatomic, strong) NSArray *target; // 目标页面 -@property (nonatomic, copy) NSString *clickAction; // 跳转地址 -@property (nonatomic, strong) NSDictionary *extras; // 附加字段 - -@end - -@interface JPushCollectControl : NSObject - -/* ssid SSID信息。设置为NO,不采集SSID信息。默认为YES。 */ -@property (nonatomic, assign) BOOL ssid; -/* bssid BSSID信息。设置为NO,不采集BSSID信息。默认为YES。 */ -@property (nonatomic, assign) BOOL bssid; -/* cell 基站信息。设置为NO,不采集基站信息。默认为YES。*/ -@property (nonatomic, assign) BOOL cell; -/* gps 经纬度信息。设置为NO,不采集经纬度信息。默认为YES。 */ -@property (nonatomic, assign) BOOL gps; - -@end - -/*! - * JPush 核心头文件 - */ -@interface JPUSHService : NSObject - - -///---------------------------------------------------- -/// @name Setup 启动相关 -///---------------------------------------------------- - - -/*! - * @abstract 启动SDK - * - * @param launchingOption 启动参数. - * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. - * @param channel 发布渠道. 可选. - * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. - * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. - * - * @discussion 提供SDK启动必须的参数, 来启动 SDK. - * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. - */ -+ (void)setupWithOption:(nullable NSDictionary *)launchingOption - appKey:(NSString *)appKey - channel:(nullable NSString *)channel - apsForProduction:(BOOL)isProduction; - -/*! - * @abstract 启动SDK - * - * @param launchingOption 启动参数. - * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. - * @param channel 发布渠道. 可选. - * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. - * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. - * @param advertisingId 广告标识符(IDFA) 如果不需要使用IDFA,传nil. - * - * @discussion 提供SDK启动必须的参数, 来启动 SDK. - * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. - */ -+ (void)setupWithOption:(nullable NSDictionary *)launchingOption - appKey:(NSString *)appKey - channel:(nullable NSString *)channel - apsForProduction:(BOOL)isProduction - advertisingIdentifier:(nullable NSString *)advertisingId; - - -///---------------------------------------------------- -/// @name APNs about 通知相关 -///---------------------------------------------------- - -/*! - * @abstract 注册要处理的远程通知类型 - * - * @param types 通知类型 - * @param categories 类别组 - * - */ -+ (void)registerForRemoteNotificationTypes:(NSUInteger)types - categories:(nullable NSSet *)categories; -/*! - * @abstract 新版本的注册方法(兼容iOS10) - * - * @param config 注册通知配置 - * @param delegate 代理 - * - */ -+ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(nullable id)delegate; - - -+ (void)registerDeviceToken:(NSData *)deviceToken; - -/*! - * @abstract 上报liveactivity的启动token - * - * @param activityAttributes 某liveActivity定义的属性类型 - * @param pushToStartToken 对应该liveactivity的pushToStartToken,如有更新,请及时调用该方法更新pushToStartToken - * @param completion 响应回调 - * @param seq 请求序列号 - */ -+ (void)registerLiveActivity:(NSString *)activityAttributes - pushToStartToken:(nullable NSData *)pushToStartToken - completion:(nullable JPUSHLiveActivityTokenCompletion)completion - seq:(NSInteger)seq; - -/*! - * @abstract 注册liveActivity并上报其pushToken - * 在pushToken有变化的时候同步调用该接口。 - * 在liveActivity结束的时候,请同步调用该接口,pushToken传nil - * - * @param liveActivityId 标识某一个liveActivity - * @param pushToken 对应该liveActivity的pushToken,如有更新,请及时调用该方法更新pushToken - * @param completion 响应回调 - * @param seq 请求序列号 - */ -+ (void)registerLiveActivity:(NSString *)liveActivityId - pushToken:(nullable NSData *)pushToken - completion:(nullable JPUSHLiveActivityTokenCompletion)completion - seq:(NSInteger)seq; - -/*! - * @abstract 处理收到的 APNs 消息 - */ -+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo; - -/*! - * @abstract 向极光服务器提交Token - * - * @param voipToken 推送使用的Voip Token - */ -+ (void)registerVoipToken:(NSData *)voipToken; - - -/*! - * @abstract 处理收到的 Voip 消息 - * - * @param remoteInfo 下发的 Voip 内容 - */ -+ (void)handleVoipNotification:(NSDictionary *)remoteInfo; - - -/*! -* @abstract 检测通知授权状态 -* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus -*/ -+ (void)requestNotificationAuthorization:(nullable void (^)(JPAuthorizationStatus status))completion; - -/*! -* @abstract 跳转至系统设置页面,iOS8及以上有效 -*/ -+ (void)openSettingsForNotification:(nullable void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0); - -/*! - * Tags操作接口 - * 支持增加/覆盖/删除/清空/查询操作 - * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) - */ - -/** - 增加tags - - @param tags 需要增加的tags集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)addTags:(NSSet *)tags - completion:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 覆盖tags - 调用该接口会覆盖用户所有的tags - - @param tags 需要设置的tags集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)setTags:(NSSet *)tags - completion:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 删除指定tags - - @param tags 需要删除的tags集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)deleteTags:(NSSet *)tags - completion:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 清空所有tags - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)cleanTags:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 查询全部tags - - @param completion 响应回调,请在回调中获取查询结果 - @param seq 请求序列号 - */ -+ (void)getAllTags:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 验证tag是否绑定 - - @param completion 响应回调,回调中查看是否绑定 - @param seq 请求序列号 - */ -+ (void)validTag:(NSString *)tag - completion:(nullable JPUSHTagValidOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 设置Alias - - @param alias 需要设置的alias - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)setAlias:(NSString *)alias - completion:(nullable JPUSHAliasOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 删除alias - - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)deleteAlias:(nullable JPUSHAliasOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 查询当前alias - - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)getAlias:(nullable JPUSHAliasOperationCompletion)completion - seq:(NSInteger)seq; - - -/*! - * @abstract 过滤掉无效的 tags - * - * @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags. - * 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤. - */ -+ (NSSet *)filterValidTags:(NSSet *)tags; - - -/*! - * Property操作接口 - * 支持增加/删除/清空操作 - * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) - */ - -/** - 新增/更新用户属性 - - 如果某个用户属性之前已经存在了,则会更新;不存在,则会新增 - - @param properties 需要新增或者更新的的用户属性内容,类型为NSDictionary; - Key 为用户属性名称,类型必须是 NSString 类型;Value为用户属性值,只支持 NSString、NSNumber、NSDate类型,如果属性为BOOL类型,传值时请转成NSNumber类型 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)setProperties:(NSDictionary *)properties - completion:(nullable JPUSHPropertiesOperationCompletion)completion - seq:(NSInteger)seq; - - -/** - 删除指定属性 - - @param keys 需要删除的属性名称集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)deleteProperties:(NSSet *)keys - completion:(nullable JPUSHPropertiesOperationCompletion)completion - seq:(NSInteger)seq; - - -/** - 清空所有属性 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)cleanProperties:(nullable JPUSHPropertiesOperationCompletion)completion - seq:(NSInteger)seq; - - -/*! - * 应用内消息接口 - * 使用应用内消息需要配置以下两个接口。请在进入页面和离开页面的时候相应地配置。以下两个接口请配套调用。 - */ - -/** - 进入页面 - - 请与 + (void)pageLeave:(NSString *)pageName; 方法配套使用 - - @param pageName 页面名 - @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 - */ -+ (void)pageEnterTo:(NSString *)pageName; - - -/** - 离开页面 - - 请与 + (void)pageEnterTo:(NSString *)pageName;方法配套使用 - - @param pageName 页面名 - @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 - */ -+ (void)pageLeave:(NSString *)pageName; - - -/*! -* @abstract 设置应用内消息的代理 -* -* @discussion 遵守JPUSHInAppMessageDelegate的代理对象 -* -*/ -+ (void)setInAppMessageDelegate:(id)inAppMessageDelegate; - - -///---------------------------------------------------- -/// @name Stats 统计功能 -///---------------------------------------------------- - -/*! - * @abstract 开始记录页面停留 - * - * @param pageName 页面名称 - * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics - */ -+ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); - -/*! - * @abstract 停止记录页面停留 - * - * @param pageName 页面 - * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics - */ -+ (void)stopLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); - -/*! - * @abstract 直接上报在页面的停留时间 - * - * @param pageName 页面 - * @param seconds 停留的秒数 - * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics - */ -+ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds __attribute__((deprecated("JCore 1.1.8 版本已过期"))); - -/*! - * @abstract 开启Crash日志收集 - * - * @discussion 默认是关闭状态. - */ -+ (void)crashLogON; - -/*! - * @abstract 地理位置上报 - * - * @param latitude 纬度. - * @param longitude 经度. - * - */ -+ (void)setLatitude:(double)latitude longitude:(double)longitude; - -/*! - * @abstract 地理位置上报 - * - * @param location 直接传递 CLLocation * 型的地理信息 - * - * @discussion 需要链接 CoreLocation.framework 并且 #import - */ -+ (void)setLocation:(CLLocation *)location; - -/** - 设置地理围栏的最大个数 - 默认值为 10 ,iOS系统默认地理围栏最大个数为20 - @param count 个数 count - */ -+ (void)setGeofeneceMaxCount:(NSInteger)count; - -/** - 设置地理围栏'圈内'类型的检测周期 - 默认15分钟检测一次 - */ -+ (void)setGeofenecePeriodForInside:(NSInteger)seconds; - -/** - 注册地理围栏的代理 - - @param delegate 代理 - @param launchOptions app启动完成是收到的字段参数 - */ -+ (void)registerLbsGeofenceDelegate:(id)delegate withLaunchOptions:(nullable NSDictionary *)launchOptions; - -/** - 删除地理围栏 - - @param geofenceId 地理围栏id - */ -+ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId; - -///---------------------------------------------------- -/// @name Local Notification 本地通知 -///---------------------------------------------------- -/*! - * @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本) - * - * JPush 2.1.9新接口 - * @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回 - * @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换 - * - */ -+ (void)addNotification:(JPushNotificationRequest *)request; - -/*! - * @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本) - * - * JPush 2.1.9新接口 - * @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。 - * @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换 - * - */ -+ (void)removeNotification:(nullable JPushNotificationIdentifier *)identifier; - -/*! - * @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本) - * - * JPush 2.1.9新接口 - * @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有未触发的推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。 - * @discussion 旧的查找推送接口被废弃,使用此接口可以替换 - * - */ -+ (void)findNotification:(JPushNotificationIdentifier *)identifier; - -/*! - * @abstract 本地推送,最多支持64个 - * - * @param fireDate 本地推送触发的时间 - * @param alertBody 本地推送需要显示的内容 - * @param badge 角标的数字。如果不需要改变角标传-1 - * @param alertAction 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动") - * @param notificationKey 本地推送标示符 - * @param userInfo 自定义参数,可以用来标识推送和增加附加信息 - * @param soundName 自定义通知声音,设置为nil为默认声音 - * - * @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代 - */ -+ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate - alertBody:(NSString *)alertBody - badge:(int)badge - alertAction:(NSString *)alertAction - identifierKey:(NSString *)notificationKey - userInfo:(NSDictionary *)userInfo - soundName:(NSString *)soundName __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 本地推送 (支持 iOS8 新参数) - * - * IOS8新参数 - * @param region 自定义参数 - * @param regionTriggersOnce 自定义参数 - * @param category 自定义参数 - * @discussion 此方法被[addNotification:]方法取代 - */ -+ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate - alertBody:(NSString *)alertBody - badge:(int)badge - alertAction:(NSString *)alertAction - identifierKey:(NSString *)notificationKey - userInfo:(NSDictionary *)userInfo - soundName:(NSString *)soundName - region:(CLRegion *)region - regionTriggersOnce:(BOOL)regionTriggersOnce - category:(NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 前台展示本地推送 - * - * @param notification 本地推送对象 - * @param notificationKey 需要前台显示的本地推送通知的标示符 - * - * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可 - */ -+ (void)showLocalNotificationAtFront:(UILocalNotification *)notification - identifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); -/*! - * @abstract 删除本地推送定义 - * - * @param notificationKey 本地推送标示符 - * @discussion 此方法被[removeNotification:]方法取代 - */ -+ (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 删除本地推送定义 - * @discussion 此方法被[removeNotification:]方法取代 - */ -+ (void)deleteLocalNotification:(UILocalNotification *)localNotification __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 获取指定通知 - * - * @param notificationKey 本地推送标示符 - * @return 本地推送对象数组, [array count]为0时表示没找到 - * @discussion 此方法被[findNotification:]方法取代 - */ -+ (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 清除所有本地推送对象 - * @discussion 此方法被[removeNotification:]方法取代 - */ -+ (void)clearAllLocalNotifications __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - - -///---------------------------------------------------- -/// @name Server badge 服务器端 badge 功能 -///---------------------------------------------------- - -/*! - * @abstract 设置角标(到服务器) - * - * @param value 新的值. 会覆盖服务器上保存的值(这个用户) - * - * @discussion 本接口不会改变应用本地的角标值. - * 本地仍须调用 UIApplication:setApplicationIconBadgeNumber 函数来设置脚标. - * - * 本接口用于配合 JPush 提供的服务器端角标功能. - * 该功能解决的问题是, 服务器端推送 APNs 时, 并不知道客户端原来已经存在的角标是多少, 指定一个固定的数字不太合理. - * - * JPush 服务器端脚标功能提供: - * - * - 通过本 API 把当前客户端(当前这个用户的) 的实际 badge 设置到服务器端保存起来; - * - 调用服务器端 API 发 APNs 时(通常这个调用是批量针对大量用户), - * 使用 "+1" 的语义, 来表达需要基于目标用户实际的 badge 值(保存的) +1 来下发通知时带上新的 badge 值; - */ -+ (BOOL)setBadge:(NSInteger)value; - -/*! - * @abstract 重置脚标(为0) - * - * @discussion 相当于 [setBadge:0] 的效果. - * 参考 [JPUSHService setBadge:] 说明来理解其作用. - */ -+ (void)resetBadge; - -///---------------------------------------------------- -/// @name Other Feature 其他功能 -///---------------------------------------------------- - -/*! - * @abstract 设置手机号码(到服务器) - * - * @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码 - * @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息 - * - * @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。 - * - */ -+ (void)setMobileNumber:(NSString *)mobileNumber completion:(nullable void (^)(NSError *error))completion; - -///---------------------------------------------------- -/// @name Logs and others 日志与其他 -///---------------------------------------------------- - -/*! - * @abstract JPush标识此设备的 registrationID - * - * @discussion SDK注册成功后, 调用此接口获取到 registrationID 才能够获取到. - * - * JPush 支持根据 registrationID 来进行推送. - * 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来. - * registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil. - * 更多的理解请参考 JPush 的文档网站. - */ -+ (NSString *)registrationID; - -+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString * _Nullable registrationID))completionHandler; - -/*! - * @abstract 打开日志级别到 Debug - * - * @discussion JMessage iOS 的日志系统参考 Android 设计了级别. - * 从低到高是: Verbose, Debug, Info, Warning, Error. - * 对日志级别的进一步理解, 请参考 Android 相关的说明. - * - * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志. - * - * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志. - */ -+ (void)setDebugMode; - -/*! - * @abstract 关闭日志 - * - * @discussion 关于日志级别的说明, 参考 [JPUSHService setDebugMode] - * - * 虽说是关闭日志, 但还是会打印 Warning, Error 日志. 这二种日志级别, 在程序运行正常时, 不应有打印输出. - * - * 建议在发布的版本里, 调用此接口, 关闭掉日志打印. - */ -+ (void)setLogOFF; - -/*! - 数据采集控制 - - @param control 数据采集配置。 - */ -+ (void)setCollectControl:(JPushCollectControl *)control; - -/*! - * @abstract 设置心跳时间间隔 - * - * @param interval 心跳时间间隔 单位为秒, 取值范围为[30,290] - * - * @discussion 请在初始化函数之前调用该接口。 - * - */ -+ (void)setHeartBeatTimeInterval:(NSInteger)interval; - -/*! - * @abstract 设置SDK地理位置权限开关 - * - * @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。 - * - */ -+ (void)setLocationEanable:(BOOL)isEanble; - -/*! - * @abstract 设置PUSH开关 - * - * @discussion 关闭PUSH之后,将接收不到极光通知推送、自定义消息推送、liveActivity消息推送,默认是开启。 - * - */ -+ (void)setPushEnable:(BOOL)isEnable completion:(nullable void (^)(NSInteger iResCode))completion; - -/*! - * @abstract 设置进入后台是否允许长连接 - * - * @param isEnable YES:允许,NO:不允许,默认是NO,进入后台会关闭长连接,回到前台会重新接入。 - * - * @discussion 请在初始化函数之前调用 - * - */ -+ (void)setBackgroundEnable:(BOOL)isEnable; - -/*! - * @abstract 设置用户分群推送功能开关 - * - * @param isEnable YES:开启,NO:关闭,默认是开启。 - * - */ -+ (void)setSmartPushEnable:(BOOL)isEnable; - -/*! - * @abstract 设置应用数据洞察扩展功能开关 - * - * @param isEnable YES:开启,NO:关闭,默认是开启。 - * - */ -+ (void)setDataInsightsEnable:(BOOL)isEnable; - - -/*! -* @abstract 设置应用内提醒消息的代理 -* -* @discussion 遵守JPushNotiInMessageDelegate的代理对象 -* -*/ -+ (void)setNotiInMessageDelegate:(id)notiInMessageDelegate; - - - -///---------------------------------------------------- -///********************下列方法已过期******************** -///**************请使用新版tag/alias操作接口************** -///---------------------------------------------------- -/// @name Tag alias setting 设置别名与标签 -///---------------------------------------------------- - -/*! - * 下面的接口是可选的 - * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) - * setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可. - * WARN: 使用block时需要注意循环引用问题 - */ -+ (void) setTags:(NSSet *)tags - alias:(NSString *)alias -callbackSelector:(SEL)cbSelector - target:(id)theTarget __attribute__((deprecated("JPush 2.1.1 版本已过期"))); -+ (void) setTags:(NSSet *)tags - alias:(NSString *)alias -callbackSelector:(SEL)cbSelector - object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void) setTags:(NSSet *)tags -callbackSelector:(SEL)cbSelector - object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void)setTags:(NSSet *)tags - alias:(NSString *)alias -fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void) setTags:(NSSet *)tags -aliasInbackground:(NSString *)alias __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void)setAlias:(NSString *)alias -callbackSelector:(SEL)cbSelector - object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); - -@end - -@class UNUserNotificationCenter; -@class UNNotificationResponse; - -@protocol JPUSHRegisterDelegate - -/* - * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:] - * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 - * @param notification 前台得到的的通知对象 - * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions - */ -- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler; -/* - * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:] - * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 - * @param response 通知响应对象 - * @param completionHandler - */ -- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler; - -/* - * @brief handle UserNotifications.framework [openSettingsForNotification:] - * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 - * @param notification 当前管理的通知对象 - */ -- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0); - -/** - * 监测通知授权状态返回的结果 - * @param status 授权通知状态,详见JPAuthorizationStatus - * @param info 更多信息,预留参数 - */ -- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(nullable NSDictionary *)info; - -@end - -@protocol JPUSHGeofenceDelegate -/** - 触发地理围栏 - @param geofence 地理围栏触发时返回的信息 - @param error 错误信息 - */ -- (void)jpushGeofenceRegion:(nullable NSDictionary *)geofence - error:(nullable NSError *)error; - -/** - 拉取地理围栏列表的回调 - - @param geofenceList 地理围栏列表 - */ -- (void)jpushCallbackGeofenceReceived:(nullable NSArray *)geofenceList; - -/** - 进入地理围栏区域 - - @param geofenceId 地理围栏id - @param userInfo 地理围栏触发时返回的信息 - @param error 错误信息 - */ -- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); - -/** - 离开地理围栏区域 - - @param geofenceId 地理围栏id - @param userInfo 地理围栏触发时返回的信息 - @param error 错误信息 - */ -- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); - -@end - - -@protocol JPUSHNotiInMessageDelegate - -/** - 应用内提醒消息展示的回调 - - @param content 应用内提醒消息的内容 - - */ -- (void)jPushNotiInMessageDidShowWithContent:(NSDictionary *)content; - -/** - 应用内提醒消息点击的回调 - - @param content 应用内提醒消息的内容 - - */ -- (void)jPushNotiInMessageDidClickWithContent:(NSDictionary *)content; - -@end - - -@protocol JPUSHInAppMessageDelegate - -/** - 应用内消息展示的回调 - - @param inAppMessage 应用内消息的内容 - - */ -- (void)jPushInAppMessageDidShow:(JPushInAppMessage *)inAppMessage; - -/** - 应用内消息点击的回调 - - @param inAppMessage 应用内消息的内容 - - */ -- (void)jPushInAppMessageDidClick:(JPushInAppMessage *)inAppMessage; - -@end - -NS_ASSUME_NONNULL_END diff --git a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/PrivacyInfo.xcprivacy b/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/PrivacyInfo.xcprivacy deleted file mode 100644 index e2920ec..0000000 --- a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,23 +0,0 @@ - - - - - NSPrivacyTrackingDomains - - NSPrivacyCollectedDataTypes - - NSPrivacyTracking - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPITypeReasons - - CA92.1 - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - - - - diff --git a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/libJPush.a b/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/libJPush.a deleted file mode 100644 index 5690e20..0000000 Binary files a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64/libJPush.a and /dev/null differ diff --git a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h b/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h deleted file mode 100644 index 5752e8a..0000000 --- a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h +++ /dev/null @@ -1,1011 +0,0 @@ -/* - * | | | | \ \ / / | | | | / _______| - * | |____| | \ \/ / | |____| | / / - * | |____| | \ / | |____| | | | _____ - * | | | | / \ | | | | | | |____ | - * | | | | / /\ \ | | | | \ \______| | - * | | | | /_/ \_\ | | | | \_________| - * - * Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved. - */ - -#define JPUSH_VERSION_NUMBER 5.9.0 - -#import - -NS_ASSUME_NONNULL_BEGIN - -@class CLRegion; -@class UILocalNotification; -@class CLLocation; -@class UNNotificationCategory; -@class UNNotificationSettings; -@class UNNotificationRequest; -@class UNNotification; -@class UIView; -@protocol JPUSHRegisterDelegate; -@protocol JPUSHGeofenceDelegate; -@protocol JPUSHNotiInMessageDelegate; -@protocol JPUSHInAppMessageDelegate; - -typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq); -typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq, BOOL isBind); -typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *_Nullable iAlias, NSInteger seq); -typedef void (^JPUSHPropertiesOperationCompletion)(NSInteger iResCode, NSDictionary *_Nullable properties, NSInteger seq); -typedef void (^JPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *_Nullable iLiveActivityId, NSData * _Nullable pushToken, NSInteger seq); - -extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中 -extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接 -extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接 -extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功 -extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败 -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 - JPAuthorizationOptionCarPlay = (1 << 3), // The ability to display notifications in a CarPlay environment. - JPAuthorizationOptionCriticalAlert NS_AVAILABLE_IOS(12.0) = (1 << 4) , //The ability to play sounds for critical alerts. - JPAuthorizationOptionProvidesAppNotificationSettings NS_AVAILABLE_IOS(12.0) = (1 << 5) , //An option indicating the system should display a button for in-app notification settings. - JPAuthorizationOptionProvisional NS_AVAILABLE_IOS(12.0) = (1 << 6) , //The ability to post noninterrupting notifications provisionally to the Notification Center. - JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods. -}; - -typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) { - JPAuthorizationNotDetermined = 0, // The user has not yet made a choice regarding whether the application may post user notifications. - JPAuthorizationStatusDenied, // The application is not authorized to post user notifications. - JPAuthorizationStatusAuthorized, // The application is authorized to post user notifications. - JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0), // The application is authorized to post non-interruptive user notifications. -}; - -/*! - * 通知注册实体类 - */ -@interface JPUSHRegisterEntity : NSObject - -/*! - * 支持的类型 - * badge,sound,alert - */ -@property (nonatomic, assign) NSInteger types; -/*! - * 注入的类别 - * iOS10 UNNotificationCategory - * iOS8-iOS9 UIUserNotificationCategory - */ -@property (nonatomic, strong, nullable) NSSet *categories; -@end - -/*! - * 进行删除、查找推送实体类 - */ -@interface JPushNotificationIdentifier : NSObject - -@property (nonatomic, copy, nullable) NSArray * identifiers; // 推送的标识数组 -@property (nonatomic, copy, nullable) UILocalNotification * notificationObj NS_DEPRECATED_IOS(4_0, 10_0); // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效 -@property (nonatomic, assign) BOOL delivered NS_AVAILABLE_IOS(10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的 -@property (nonatomic, copy, nullable) void (^findCompletionHandler)(NSArray * _Nullable results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组) - -@end - -/*! - * 推送通知声音实体类 - * iOS10以上有效 - */ -@interface JPushNotificationSound : NSObject -@property (nonatomic, copy, nullable) NSString *soundName; //普通通知铃声 -@property (nonatomic, copy, nullable) NSString *criticalSoundName NS_AVAILABLE_IOS(12.0); //警告通知铃声 -@property (nonatomic, assign) float criticalSoundVolume NS_AVAILABLE_IOS(12.0); //警告通知铃声音量,有效值在0~1之间,默认为1 -@end - - -/*! - * 推送内容实体类 - */ -@interface JPushNotificationContent : NSObject - -@property (nonatomic, copy) NSString *title; // 推送标题 -@property (nonatomic, copy) NSString *subtitle; // 推送副标题 -@property (nonatomic, copy) NSString *body; // 推送内容 -@property (nonatomic, copy, nullable) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1) -@property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效) -@property (nonatomic, copy) NSString *categoryIdentifier; // 行为分类标识 -@property (nonatomic, copy) NSDictionary *userInfo; // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo -@property (nonatomic, copy, nullable) NSString *sound; // 声音名称,不设置则为默认声音 -@property (nonatomic, copy, nullable) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0); //推送声音实体 -@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型 -@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组 -@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到 -@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。 -@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。 -@property (nonatomic, copy, nullable) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification. -//iOS15以上的新增属性 interruptionLevel为枚举UNNotificationInterruptionLevel -// The interruption level determines the degree of interruption associated with the notification -@property (nonatomic, assign) NSUInteger interruptionLevel NS_AVAILABLE_IOS(15.0); -// Relevance score determines the sorting for the notification across app notifications. The expected range is between 0.0f and 1.0f. -@property (nonatomic, assign) double relevanceScore NS_AVAILABLE_IOS(15.0); -// iOS16以上的新增属性 -@property (nonatomic, copy, nullable) NSString * filterCriteria NS_AVAILABLE_IOS(16.0); // default nil - -@end - - -/*! - * 推送触发方式实体类 - * 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数 - */ -@interface JPushNotificationTrigger : NSObject - -@property (nonatomic, assign) BOOL repeat; // 设置是否重复,默认为NO -@property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0); // 用来设置触发推送的时间,iOS10以上无效 -@property (nonatomic, copy) CLRegion *region NS_AVAILABLE_IOS(8_0); // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权 -@property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II -@property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的时间,iOS10以上有效,优先级为III - -@end - -/*! - * 注册或更新推送实体类 - */ -@interface JPushNotificationRequest : NSObject - -@property (nonatomic, copy) NSString *requestIdentifier; // 推送请求标识 -@property (nonatomic, copy) JPushNotificationContent *content; // 设置推送的具体内容 -@property (nonatomic, copy) JPushNotificationTrigger *trigger; // 设置推送的触发方式 -@property (nonatomic, copy, nullable) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil - -@end - - -/*! - * 应用内消息内容实体 - */ -@interface JPushInAppMessage : NSObject - -@property (nonatomic, copy) NSString *mesageId; // 消息id -@property (nonatomic, copy) NSString *title; // 标题 -@property (nonatomic, copy) NSString *content; // 内容 -@property (nonatomic, strong) NSArray *target; // 目标页面 -@property (nonatomic, copy) NSString *clickAction; // 跳转地址 -@property (nonatomic, strong) NSDictionary *extras; // 附加字段 - -@end - -@interface JPushCollectControl : NSObject - -/* ssid SSID信息。设置为NO,不采集SSID信息。默认为YES。 */ -@property (nonatomic, assign) BOOL ssid; -/* bssid BSSID信息。设置为NO,不采集BSSID信息。默认为YES。 */ -@property (nonatomic, assign) BOOL bssid; -/* cell 基站信息。设置为NO,不采集基站信息。默认为YES。*/ -@property (nonatomic, assign) BOOL cell; -/* gps 经纬度信息。设置为NO,不采集经纬度信息。默认为YES。 */ -@property (nonatomic, assign) BOOL gps; - -@end - -/*! - * JPush 核心头文件 - */ -@interface JPUSHService : NSObject - - -///---------------------------------------------------- -/// @name Setup 启动相关 -///---------------------------------------------------- - - -/*! - * @abstract 启动SDK - * - * @param launchingOption 启动参数. - * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. - * @param channel 发布渠道. 可选. - * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. - * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. - * - * @discussion 提供SDK启动必须的参数, 来启动 SDK. - * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. - */ -+ (void)setupWithOption:(nullable NSDictionary *)launchingOption - appKey:(NSString *)appKey - channel:(nullable NSString *)channel - apsForProduction:(BOOL)isProduction; - -/*! - * @abstract 启动SDK - * - * @param launchingOption 启动参数. - * @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识. - * @param channel 发布渠道. 可选. - * @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES. - * App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致. - * @param advertisingId 广告标识符(IDFA) 如果不需要使用IDFA,传nil. - * - * @discussion 提供SDK启动必须的参数, 来启动 SDK. - * 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作. - */ -+ (void)setupWithOption:(nullable NSDictionary *)launchingOption - appKey:(NSString *)appKey - channel:(nullable NSString *)channel - apsForProduction:(BOOL)isProduction - advertisingIdentifier:(nullable NSString *)advertisingId; - - -///---------------------------------------------------- -/// @name APNs about 通知相关 -///---------------------------------------------------- - -/*! - * @abstract 注册要处理的远程通知类型 - * - * @param types 通知类型 - * @param categories 类别组 - * - */ -+ (void)registerForRemoteNotificationTypes:(NSUInteger)types - categories:(nullable NSSet *)categories; -/*! - * @abstract 新版本的注册方法(兼容iOS10) - * - * @param config 注册通知配置 - * @param delegate 代理 - * - */ -+ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(nullable id)delegate; - - -+ (void)registerDeviceToken:(NSData *)deviceToken; - -/*! - * @abstract 上报liveactivity的启动token - * - * @param activityAttributes 某liveActivity定义的属性类型 - * @param pushToStartToken 对应该liveactivity的pushToStartToken,如有更新,请及时调用该方法更新pushToStartToken - * @param completion 响应回调 - * @param seq 请求序列号 - */ -+ (void)registerLiveActivity:(NSString *)activityAttributes - pushToStartToken:(nullable NSData *)pushToStartToken - completion:(nullable JPUSHLiveActivityTokenCompletion)completion - seq:(NSInteger)seq; - -/*! - * @abstract 注册liveActivity并上报其pushToken - * 在pushToken有变化的时候同步调用该接口。 - * 在liveActivity结束的时候,请同步调用该接口,pushToken传nil - * - * @param liveActivityId 标识某一个liveActivity - * @param pushToken 对应该liveActivity的pushToken,如有更新,请及时调用该方法更新pushToken - * @param completion 响应回调 - * @param seq 请求序列号 - */ -+ (void)registerLiveActivity:(NSString *)liveActivityId - pushToken:(nullable NSData *)pushToken - completion:(nullable JPUSHLiveActivityTokenCompletion)completion - seq:(NSInteger)seq; - -/*! - * @abstract 处理收到的 APNs 消息 - */ -+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo; - -/*! - * @abstract 向极光服务器提交Token - * - * @param voipToken 推送使用的Voip Token - */ -+ (void)registerVoipToken:(NSData *)voipToken; - - -/*! - * @abstract 处理收到的 Voip 消息 - * - * @param remoteInfo 下发的 Voip 内容 - */ -+ (void)handleVoipNotification:(NSDictionary *)remoteInfo; - - -/*! -* @abstract 检测通知授权状态 -* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus -*/ -+ (void)requestNotificationAuthorization:(nullable void (^)(JPAuthorizationStatus status))completion; - -/*! -* @abstract 跳转至系统设置页面,iOS8及以上有效 -*/ -+ (void)openSettingsForNotification:(nullable void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0); - -/*! - * Tags操作接口 - * 支持增加/覆盖/删除/清空/查询操作 - * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) - */ - -/** - 增加tags - - @param tags 需要增加的tags集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)addTags:(NSSet *)tags - completion:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 覆盖tags - 调用该接口会覆盖用户所有的tags - - @param tags 需要设置的tags集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)setTags:(NSSet *)tags - completion:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 删除指定tags - - @param tags 需要删除的tags集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)deleteTags:(NSSet *)tags - completion:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 清空所有tags - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)cleanTags:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 查询全部tags - - @param completion 响应回调,请在回调中获取查询结果 - @param seq 请求序列号 - */ -+ (void)getAllTags:(nullable JPUSHTagsOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 验证tag是否绑定 - - @param completion 响应回调,回调中查看是否绑定 - @param seq 请求序列号 - */ -+ (void)validTag:(NSString *)tag - completion:(nullable JPUSHTagValidOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 设置Alias - - @param alias 需要设置的alias - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)setAlias:(NSString *)alias - completion:(nullable JPUSHAliasOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 删除alias - - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)deleteAlias:(nullable JPUSHAliasOperationCompletion)completion - seq:(NSInteger)seq; - -/** - 查询当前alias - - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)getAlias:(nullable JPUSHAliasOperationCompletion)completion - seq:(NSInteger)seq; - - -/*! - * @abstract 过滤掉无效的 tags - * - * @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags. - * 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤. - */ -+ (NSSet *)filterValidTags:(NSSet *)tags; - - -/*! - * Property操作接口 - * 支持增加/删除/清空操作 - * 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) - */ - -/** - 新增/更新用户属性 - - 如果某个用户属性之前已经存在了,则会更新;不存在,则会新增 - - @param properties 需要新增或者更新的的用户属性内容,类型为NSDictionary; - Key 为用户属性名称,类型必须是 NSString 类型;Value为用户属性值,只支持 NSString、NSNumber、NSDate类型,如果属性为BOOL类型,传值时请转成NSNumber类型 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)setProperties:(NSDictionary *)properties - completion:(nullable JPUSHPropertiesOperationCompletion)completion - seq:(NSInteger)seq; - - -/** - 删除指定属性 - - @param keys 需要删除的属性名称集合 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)deleteProperties:(NSSet *)keys - completion:(nullable JPUSHPropertiesOperationCompletion)completion - seq:(NSInteger)seq; - - -/** - 清空所有属性 - @param completion 响应回调 - @param seq 请求序列号 - */ -+ (void)cleanProperties:(nullable JPUSHPropertiesOperationCompletion)completion - seq:(NSInteger)seq; - - -/*! - * 应用内消息接口 - * 使用应用内消息需要配置以下两个接口。请在进入页面和离开页面的时候相应地配置。以下两个接口请配套调用。 - */ - -/** - 进入页面 - - 请与 + (void)pageLeave:(NSString *)pageName; 方法配套使用 - - @param pageName 页面名 - @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 - */ -+ (void)pageEnterTo:(NSString *)pageName; - - -/** - 离开页面 - - 请与 + (void)pageEnterTo:(NSString *)pageName;方法配套使用 - - @param pageName 页面名 - @discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。 - */ -+ (void)pageLeave:(NSString *)pageName; - - -/*! -* @abstract 设置应用内消息的代理 -* -* @discussion 遵守JPUSHInAppMessageDelegate的代理对象 -* -*/ -+ (void)setInAppMessageDelegate:(id)inAppMessageDelegate; - - -///---------------------------------------------------- -/// @name Stats 统计功能 -///---------------------------------------------------- - -/*! - * @abstract 开始记录页面停留 - * - * @param pageName 页面名称 - * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics - */ -+ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); - -/*! - * @abstract 停止记录页面停留 - * - * @param pageName 页面 - * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics - */ -+ (void)stopLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期"))); - -/*! - * @abstract 直接上报在页面的停留时间 - * - * @param pageName 页面 - * @param seconds 停留的秒数 - * @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics - */ -+ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds __attribute__((deprecated("JCore 1.1.8 版本已过期"))); - -/*! - * @abstract 开启Crash日志收集 - * - * @discussion 默认是关闭状态. - */ -+ (void)crashLogON; - -/*! - * @abstract 地理位置上报 - * - * @param latitude 纬度. - * @param longitude 经度. - * - */ -+ (void)setLatitude:(double)latitude longitude:(double)longitude; - -/*! - * @abstract 地理位置上报 - * - * @param location 直接传递 CLLocation * 型的地理信息 - * - * @discussion 需要链接 CoreLocation.framework 并且 #import - */ -+ (void)setLocation:(CLLocation *)location; - -/** - 设置地理围栏的最大个数 - 默认值为 10 ,iOS系统默认地理围栏最大个数为20 - @param count 个数 count - */ -+ (void)setGeofeneceMaxCount:(NSInteger)count; - -/** - 设置地理围栏'圈内'类型的检测周期 - 默认15分钟检测一次 - */ -+ (void)setGeofenecePeriodForInside:(NSInteger)seconds; - -/** - 注册地理围栏的代理 - - @param delegate 代理 - @param launchOptions app启动完成是收到的字段参数 - */ -+ (void)registerLbsGeofenceDelegate:(id)delegate withLaunchOptions:(nullable NSDictionary *)launchOptions; - -/** - 删除地理围栏 - - @param geofenceId 地理围栏id - */ -+ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId; - -///---------------------------------------------------- -/// @name Local Notification 本地通知 -///---------------------------------------------------- -/*! - * @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本) - * - * JPush 2.1.9新接口 - * @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回 - * @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换 - * - */ -+ (void)addNotification:(JPushNotificationRequest *)request; - -/*! - * @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本) - * - * JPush 2.1.9新接口 - * @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。 - * @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换 - * - */ -+ (void)removeNotification:(nullable JPushNotificationIdentifier *)identifier; - -/*! - * @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本) - * - * JPush 2.1.9新接口 - * @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有未触发的推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。 - * @discussion 旧的查找推送接口被废弃,使用此接口可以替换 - * - */ -+ (void)findNotification:(JPushNotificationIdentifier *)identifier; - -/*! - * @abstract 本地推送,最多支持64个 - * - * @param fireDate 本地推送触发的时间 - * @param alertBody 本地推送需要显示的内容 - * @param badge 角标的数字。如果不需要改变角标传-1 - * @param alertAction 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动") - * @param notificationKey 本地推送标示符 - * @param userInfo 自定义参数,可以用来标识推送和增加附加信息 - * @param soundName 自定义通知声音,设置为nil为默认声音 - * - * @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代 - */ -+ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate - alertBody:(NSString *)alertBody - badge:(int)badge - alertAction:(NSString *)alertAction - identifierKey:(NSString *)notificationKey - userInfo:(NSDictionary *)userInfo - soundName:(NSString *)soundName __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 本地推送 (支持 iOS8 新参数) - * - * IOS8新参数 - * @param region 自定义参数 - * @param regionTriggersOnce 自定义参数 - * @param category 自定义参数 - * @discussion 此方法被[addNotification:]方法取代 - */ -+ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate - alertBody:(NSString *)alertBody - badge:(int)badge - alertAction:(NSString *)alertAction - identifierKey:(NSString *)notificationKey - userInfo:(NSDictionary *)userInfo - soundName:(NSString *)soundName - region:(CLRegion *)region - regionTriggersOnce:(BOOL)regionTriggersOnce - category:(NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 前台展示本地推送 - * - * @param notification 本地推送对象 - * @param notificationKey 需要前台显示的本地推送通知的标示符 - * - * @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可 - */ -+ (void)showLocalNotificationAtFront:(UILocalNotification *)notification - identifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); -/*! - * @abstract 删除本地推送定义 - * - * @param notificationKey 本地推送标示符 - * @discussion 此方法被[removeNotification:]方法取代 - */ -+ (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 删除本地推送定义 - * @discussion 此方法被[removeNotification:]方法取代 - */ -+ (void)deleteLocalNotification:(UILocalNotification *)localNotification __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 获取指定通知 - * - * @param notificationKey 本地推送标示符 - * @return 本地推送对象数组, [array count]为0时表示没找到 - * @discussion 此方法被[findNotification:]方法取代 - */ -+ (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - -/*! - * @abstract 清除所有本地推送对象 - * @discussion 此方法被[removeNotification:]方法取代 - */ -+ (void)clearAllLocalNotifications __attribute__((deprecated("JPush 2.1.9 版本已过期"))); - - -///---------------------------------------------------- -/// @name Server badge 服务器端 badge 功能 -///---------------------------------------------------- - -/*! - * @abstract 设置角标(到服务器) - * - * @param value 新的值. 会覆盖服务器上保存的值(这个用户) - * - * @discussion 本接口不会改变应用本地的角标值. - * 本地仍须调用 UIApplication:setApplicationIconBadgeNumber 函数来设置脚标. - * - * 本接口用于配合 JPush 提供的服务器端角标功能. - * 该功能解决的问题是, 服务器端推送 APNs 时, 并不知道客户端原来已经存在的角标是多少, 指定一个固定的数字不太合理. - * - * JPush 服务器端脚标功能提供: - * - * - 通过本 API 把当前客户端(当前这个用户的) 的实际 badge 设置到服务器端保存起来; - * - 调用服务器端 API 发 APNs 时(通常这个调用是批量针对大量用户), - * 使用 "+1" 的语义, 来表达需要基于目标用户实际的 badge 值(保存的) +1 来下发通知时带上新的 badge 值; - */ -+ (BOOL)setBadge:(NSInteger)value; - -/*! - * @abstract 重置脚标(为0) - * - * @discussion 相当于 [setBadge:0] 的效果. - * 参考 [JPUSHService setBadge:] 说明来理解其作用. - */ -+ (void)resetBadge; - -///---------------------------------------------------- -/// @name Other Feature 其他功能 -///---------------------------------------------------- - -/*! - * @abstract 设置手机号码(到服务器) - * - * @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码 - * @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息 - * - * @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。 - * - */ -+ (void)setMobileNumber:(NSString *)mobileNumber completion:(nullable void (^)(NSError *error))completion; - -///---------------------------------------------------- -/// @name Logs and others 日志与其他 -///---------------------------------------------------- - -/*! - * @abstract JPush标识此设备的 registrationID - * - * @discussion SDK注册成功后, 调用此接口获取到 registrationID 才能够获取到. - * - * JPush 支持根据 registrationID 来进行推送. - * 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来. - * registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil. - * 更多的理解请参考 JPush 的文档网站. - */ -+ (NSString *)registrationID; - -+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString * _Nullable registrationID))completionHandler; - -/*! - * @abstract 打开日志级别到 Debug - * - * @discussion JMessage iOS 的日志系统参考 Android 设计了级别. - * 从低到高是: Verbose, Debug, Info, Warning, Error. - * 对日志级别的进一步理解, 请参考 Android 相关的说明. - * - * SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志. - * - * 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志. - */ -+ (void)setDebugMode; - -/*! - * @abstract 关闭日志 - * - * @discussion 关于日志级别的说明, 参考 [JPUSHService setDebugMode] - * - * 虽说是关闭日志, 但还是会打印 Warning, Error 日志. 这二种日志级别, 在程序运行正常时, 不应有打印输出. - * - * 建议在发布的版本里, 调用此接口, 关闭掉日志打印. - */ -+ (void)setLogOFF; - -/*! - 数据采集控制 - - @param control 数据采集配置。 - */ -+ (void)setCollectControl:(JPushCollectControl *)control; - -/*! - * @abstract 设置心跳时间间隔 - * - * @param interval 心跳时间间隔 单位为秒, 取值范围为[30,290] - * - * @discussion 请在初始化函数之前调用该接口。 - * - */ -+ (void)setHeartBeatTimeInterval:(NSInteger)interval; - -/*! - * @abstract 设置SDK地理位置权限开关 - * - * @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。 - * - */ -+ (void)setLocationEanable:(BOOL)isEanble; - -/*! - * @abstract 设置PUSH开关 - * - * @discussion 关闭PUSH之后,将接收不到极光通知推送、自定义消息推送、liveActivity消息推送,默认是开启。 - * - */ -+ (void)setPushEnable:(BOOL)isEnable completion:(nullable void (^)(NSInteger iResCode))completion; - -/*! - * @abstract 设置进入后台是否允许长连接 - * - * @param isEnable YES:允许,NO:不允许,默认是NO,进入后台会关闭长连接,回到前台会重新接入。 - * - * @discussion 请在初始化函数之前调用 - * - */ -+ (void)setBackgroundEnable:(BOOL)isEnable; - -/*! - * @abstract 设置用户分群推送功能开关 - * - * @param isEnable YES:开启,NO:关闭,默认是开启。 - * - */ -+ (void)setSmartPushEnable:(BOOL)isEnable; - -/*! - * @abstract 设置应用数据洞察扩展功能开关 - * - * @param isEnable YES:开启,NO:关闭,默认是开启。 - * - */ -+ (void)setDataInsightsEnable:(BOOL)isEnable; - - -/*! -* @abstract 设置应用内提醒消息的代理 -* -* @discussion 遵守JPushNotiInMessageDelegate的代理对象 -* -*/ -+ (void)setNotiInMessageDelegate:(id)notiInMessageDelegate; - - - -///---------------------------------------------------- -///********************下列方法已过期******************** -///**************请使用新版tag/alias操作接口************** -///---------------------------------------------------- -/// @name Tag alias setting 设置别名与标签 -///---------------------------------------------------- - -/*! - * 下面的接口是可选的 - * 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/) - * setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可. - * WARN: 使用block时需要注意循环引用问题 - */ -+ (void) setTags:(NSSet *)tags - alias:(NSString *)alias -callbackSelector:(SEL)cbSelector - target:(id)theTarget __attribute__((deprecated("JPush 2.1.1 版本已过期"))); -+ (void) setTags:(NSSet *)tags - alias:(NSString *)alias -callbackSelector:(SEL)cbSelector - object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void) setTags:(NSSet *)tags -callbackSelector:(SEL)cbSelector - object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void)setTags:(NSSet *)tags - alias:(NSString *)alias -fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void) setTags:(NSSet *)tags -aliasInbackground:(NSString *)alias __attribute__((deprecated("JPush 3.0.6 版本已过期"))); -+ (void)setAlias:(NSString *)alias -callbackSelector:(SEL)cbSelector - object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期"))); - -@end - -@class UNUserNotificationCenter; -@class UNNotificationResponse; - -@protocol JPUSHRegisterDelegate - -/* - * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:] - * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 - * @param notification 前台得到的的通知对象 - * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions - */ -- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler; -/* - * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:] - * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 - * @param response 通知响应对象 - * @param completionHandler - */ -- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler; - -/* - * @brief handle UserNotifications.framework [openSettingsForNotification:] - * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心 - * @param notification 当前管理的通知对象 - */ -- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0); - -/** - * 监测通知授权状态返回的结果 - * @param status 授权通知状态,详见JPAuthorizationStatus - * @param info 更多信息,预留参数 - */ -- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(nullable NSDictionary *)info; - -@end - -@protocol JPUSHGeofenceDelegate -/** - 触发地理围栏 - @param geofence 地理围栏触发时返回的信息 - @param error 错误信息 - */ -- (void)jpushGeofenceRegion:(nullable NSDictionary *)geofence - error:(nullable NSError *)error; - -/** - 拉取地理围栏列表的回调 - - @param geofenceList 地理围栏列表 - */ -- (void)jpushCallbackGeofenceReceived:(nullable NSArray *)geofenceList; - -/** - 进入地理围栏区域 - - @param geofenceId 地理围栏id - @param userInfo 地理围栏触发时返回的信息 - @param error 错误信息 - */ -- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); - -/** - 离开地理围栏区域 - - @param geofenceId 地理围栏id - @param userInfo 地理围栏触发时返回的信息 - @param error 错误信息 - */ -- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期"))); - -@end - - -@protocol JPUSHNotiInMessageDelegate - -/** - 应用内提醒消息展示的回调 - - @param content 应用内提醒消息的内容 - - */ -- (void)jPushNotiInMessageDidShowWithContent:(NSDictionary *)content; - -/** - 应用内提醒消息点击的回调 - - @param content 应用内提醒消息的内容 - - */ -- (void)jPushNotiInMessageDidClickWithContent:(NSDictionary *)content; - -@end - - -@protocol JPUSHInAppMessageDelegate - -/** - 应用内消息展示的回调 - - @param inAppMessage 应用内消息的内容 - - */ -- (void)jPushInAppMessageDidShow:(JPushInAppMessage *)inAppMessage; - -/** - 应用内消息点击的回调 - - @param inAppMessage 应用内消息的内容 - - */ -- (void)jPushInAppMessageDidClick:(JPushInAppMessage *)inAppMessage; - -@end - -NS_ASSUME_NONNULL_END diff --git a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy b/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy deleted file mode 100644 index e2920ec..0000000 --- a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,23 +0,0 @@ - - - - - NSPrivacyTrackingDomains - - NSPrivacyCollectedDataTypes - - NSPrivacyTracking - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPITypeReasons - - CA92.1 - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - - - - diff --git a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/libJPush.a b/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/libJPush.a deleted file mode 100644 index 11cfa42..0000000 Binary files a/src/ios/lib/jpush-ios-5.9.0.xcframework/ios-arm64_x86_64-simulator/libJPush.a and /dev/null differ diff --git a/www/JPushPlugin.js b/www/JPushPlugin.js index f068b45..80e2c09 100644 --- a/www/JPushPlugin.js +++ b/www/JPushPlugin.js @@ -82,6 +82,14 @@ JPushPlugin.prototype.isPushStopped = function(successCallback) { this.callNative("isPushStopped", [], successCallback); }; +/** + * 检查推送是否被停止(推荐,SDK 6.0+ 新增接口,替代 isPushStopped) + * @param successCallback 回调 (result) => {},result 为 { code: number, isStopped: 0|1 },code 为 0 表示成功,isStopped 为 1 表示已停止 + */ +JPushPlugin.prototype.getPushStatus = function(successCallback) { + this.callNative("getPushStatus", [], successCallback); +}; + JPushPlugin.prototype.clearLocalNotifications = function() { if (device.platform === "Android") { this.callNative("clearLocalNotifications", [], null);