react-native-nitro-ali-push 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -2
  3. package/android/CMakeLists.txt +31 -0
  4. package/android/build.gradle +139 -0
  5. package/android/src/main/AndroidManifest.xml +30 -0
  6. package/android/src/main/java/com/margelo/nitro/alipush/AliPushMessageReceiver.kt +156 -0
  7. package/android/src/main/java/com/margelo/nitro/alipush/HybridAliPushPlugin.kt +303 -0
  8. package/android/src/main/java/com/margelo/nitro/alipush/ThirdPartMessageActivity.kt +26 -0
  9. package/ios/HybridAliPushPlugin.swift +516 -0
  10. package/lib/index.d.ts +195 -0
  11. package/lib/index.js +269 -0
  12. package/lib/specs/AliPushPlugin.nitro.d.ts +88 -0
  13. package/lib/specs/AliPushPlugin.nitro.js +2 -0
  14. package/lib/types.d.ts +111 -0
  15. package/lib/types.js +11 -0
  16. package/nitrogen/generated/.gitattributes +1 -0
  17. package/nitrogen/generated/android/NitroAliPush+autolinking.cmake +84 -0
  18. package/nitrogen/generated/android/NitroAliPush+autolinking.gradle +27 -0
  19. package/nitrogen/generated/android/NitroAliPushOnLoad.cpp +58 -0
  20. package/nitrogen/generated/android/NitroAliPushOnLoad.hpp +34 -0
  21. package/nitrogen/generated/android/c++/JAliPushAppState.hpp +61 -0
  22. package/nitrogen/generated/android/c++/JAliPushMessage.hpp +98 -0
  23. package/nitrogen/generated/android/c++/JAliPushMessageType.hpp +58 -0
  24. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  25. package/nitrogen/generated/android/c++/JFunc_void_AliPushMessage.hpp +87 -0
  26. package/nitrogen/generated/android/c++/JHybridAliPushPluginSpec.cpp +338 -0
  27. package/nitrogen/generated/android/c++/JHybridAliPushPluginSpec.hpp +78 -0
  28. package/nitrogen/generated/android/c++/JVariant_Double_String.cpp +26 -0
  29. package/nitrogen/generated/android/c++/JVariant_Double_String.hpp +68 -0
  30. package/nitrogen/generated/android/c++/JVariant_NullType_AliPushMessage.cpp +26 -0
  31. package/nitrogen/generated/android/c++/JVariant_NullType_AliPushMessage.hpp +80 -0
  32. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  33. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/AliPushAppState.kt +24 -0
  35. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/AliPushMessage.kt +91 -0
  36. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/AliPushMessageType.kt +23 -0
  37. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/Func_void.kt +78 -0
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/Func_void_AliPushMessage.kt +78 -0
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/HybridAliPushPluginSpec.kt +123 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/NitroAliPushOnLoad.kt +35 -0
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/Variant_Double_String.kt +62 -0
  42. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/Variant_NullType_AliPushMessage.kt +62 -0
  43. package/nitrogen/generated/android/kotlin/com/margelo/nitro/alipush/Variant_NullType_String.kt +62 -0
  44. package/nitrogen/generated/ios/NitroAliPush+autolinking.rb +62 -0
  45. package/nitrogen/generated/ios/NitroAliPush-Swift-Cxx-Bridge.cpp +89 -0
  46. package/nitrogen/generated/ios/NitroAliPush-Swift-Cxx-Bridge.hpp +531 -0
  47. package/nitrogen/generated/ios/NitroAliPush-Swift-Cxx-Umbrella.hpp +60 -0
  48. package/nitrogen/generated/ios/NitroAliPushAutolinking.mm +33 -0
  49. package/nitrogen/generated/ios/NitroAliPushAutolinking.swift +26 -0
  50. package/nitrogen/generated/ios/c++/HybridAliPushPluginSpecSwift.cpp +11 -0
  51. package/nitrogen/generated/ios/c++/HybridAliPushPluginSpecSwift.hpp +217 -0
  52. package/nitrogen/generated/ios/swift/AliPushAppState.swift +44 -0
  53. package/nitrogen/generated/ios/swift/AliPushMessage.swift +191 -0
  54. package/nitrogen/generated/ios/swift/AliPushMessageType.swift +40 -0
  55. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  56. package/nitrogen/generated/ios/swift/Func_void_AliPushMessage.swift +46 -0
  57. package/nitrogen/generated/ios/swift/Func_void_bool.swift +46 -0
  58. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  59. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  60. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
  61. package/nitrogen/generated/ios/swift/Func_void_std__variant_nitro__NullType__AliPushMessage_.swift +58 -0
  62. package/nitrogen/generated/ios/swift/HybridAliPushPluginSpec.swift +70 -0
  63. package/nitrogen/generated/ios/swift/HybridAliPushPluginSpec_cxx.swift +476 -0
  64. package/nitrogen/generated/ios/swift/Variant_Double_String.swift +30 -0
  65. package/nitrogen/generated/ios/swift/Variant_NullType_AliPushMessage.swift +30 -0
  66. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
  67. package/nitrogen/generated/shared/c++/AliPushAppState.hpp +80 -0
  68. package/nitrogen/generated/shared/c++/AliPushMessage.hpp +123 -0
  69. package/nitrogen/generated/shared/c++/AliPushMessageType.hpp +76 -0
  70. package/nitrogen/generated/shared/c++/HybridAliPushPluginSpec.cpp +36 -0
  71. package/nitrogen/generated/shared/c++/HybridAliPushPluginSpec.hpp +85 -0
  72. package/package.json +61 -4
  73. package/react-native-nitro-ali-push.podspec +29 -0
  74. package/src/index.ts +284 -0
  75. package/src/specs/AliPushPlugin.nitro.ts +104 -0
  76. package/src/types.ts +117 -0
package/src/index.ts ADDED
@@ -0,0 +1,284 @@
1
+ /**
2
+ * react-native-nitro-ali-push —— 阿里云移动推送 React Native 封装(Nitro Modules)。
3
+ *
4
+ * 提供账号 / 标签 / 别名绑定、设备号获取、角标管理,以及统一的推送消息事件订阅。
5
+ * 原生实现基于 Nitro Modules(HybridObject),iOS 端为 Swift、Android 端为 Kotlin,
6
+ * 由 `nitrogen` 代码生成器生成桥接层。
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { NitroModules } from 'react-native-nitro-modules';
11
+
12
+ import type { AliPushPlugin } from './specs/AliPushPlugin.nitro';
13
+ import { ALI_PUSH_EVENT } from './types';
14
+ import type { AliPushEvent, AliPushMessage, AliPushTagTarget } from './types';
15
+
16
+ /**
17
+ * 原生模块实例(Nitro HybridObject)。
18
+ *
19
+ * 若宿主工程未正确集成 Nitro 或缺少原生实现,会在此处抛错。
20
+ *
21
+ * @internal
22
+ */
23
+ const AliPushNative = NitroModules.createHybridObject<AliPushPlugin>('AliPushPlugin');
24
+
25
+ /**
26
+ * 初始化阿里云推送。
27
+ *
28
+ * @remarks
29
+ * **Android**:调用此方法并通过 `appKey` / `appSecret` 向阿里云推送服务注册应用,
30
+ * 必须在 `App` 挂载前调用。需要在 `AndroidManifest.xml` 中配置推送 `AppKey` /
31
+ * `AppSecret`(见 README)。
32
+ *
33
+ * **iOS**:推送初始化在原生 `AppDelegate` 中通过 `CloudPushSDK` 完成,此方法在
34
+ * iOS 上为无操作。
35
+ *
36
+ * @param appKey - 阿里云推送控制台分配的 AppKey。
37
+ * @param appSecret - 阿里云推送控制台分配的 AppSecret。
38
+ * @returns 初始化完成的 Promise。
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * await AliPush.initPush('your_app_key', 'your_app_secret');
43
+ * ```
44
+ */
45
+ export function initPush(appKey: string, appSecret: string): Promise<void> {
46
+ return AliPushNative.initPush(appKey, appSecret);
47
+ }
48
+
49
+ /**
50
+ * 获取设备唯一标识 `deviceId`。
51
+ *
52
+ * @returns 解析为设备 `deviceId` 字符串的 Promise。
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * const deviceId = await AliPush.getDeviceId();
57
+ * console.log(deviceId);
58
+ * ```
59
+ */
60
+ export function getDeviceId(): Promise<string> {
61
+ return AliPushNative.getDeviceId();
62
+ }
63
+
64
+ /**
65
+ * 绑定账号。
66
+ *
67
+ * @param account - 待绑定的账号(字符串,长度建议 ≤ 64)。
68
+ * @returns 操作完成的 Promise。
69
+ */
70
+ export function bindAccount(account: string): Promise<void> {
71
+ return AliPushNative.bindAccount(account);
72
+ }
73
+
74
+ /**
75
+ * 解绑账号(解绑当前已绑定账号)。
76
+ *
77
+ * @returns 操作完成的 Promise。
78
+ */
79
+ export function unbindAccount(): Promise<void> {
80
+ return AliPushNative.unbindAccount();
81
+ }
82
+
83
+ /**
84
+ * 绑定标签。
85
+ *
86
+ * @param target - 目标类型:`1` 设备 / `2` 账号 / `3` 别名。
87
+ * @param tags - 标签数组(字符串)。
88
+ * @param alias - 别名(可空,仅 `target = 3` 时生效)。
89
+ * @returns 操作完成的 Promise。
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * await AliPush.bindTag(1, ['news', 'sports'], null);
94
+ * ```
95
+ */
96
+ export function bindTag(
97
+ target: AliPushTagTarget,
98
+ tags: string[],
99
+ alias: string | null,
100
+ ): Promise<void> {
101
+ return AliPushNative.bindTag(target, tags, alias);
102
+ }
103
+
104
+ /**
105
+ * 解绑标签。参数语义同 {@link bindTag}。
106
+ *
107
+ * @param target - 目标类型:`1` 设备 / `2` 账号 / `3` 别名。
108
+ * @param tags - 待解绑的标签数组。
109
+ * @param alias - 别名(可空)。
110
+ * @returns 操作完成的 Promise。
111
+ */
112
+ export function unbindTag(
113
+ target: AliPushTagTarget,
114
+ tags: string[],
115
+ alias: string | null,
116
+ ): Promise<void> {
117
+ return AliPushNative.unbindTag(target, tags, alias);
118
+ }
119
+
120
+ /**
121
+ * 列出当前已绑定的标签。
122
+ *
123
+ * @param target - 目标类型:`1` 设备 / `2` 账号 / `3` 别名。
124
+ * @returns 解析为服务端响应字符串(含标签列表)的 Promise。
125
+ */
126
+ export function listTags(target: AliPushTagTarget): Promise<string> {
127
+ return AliPushNative.listTags(target);
128
+ }
129
+
130
+ /**
131
+ * 添加别名。
132
+ *
133
+ * @param alias - 待添加的别名。
134
+ * @returns 操作完成的 Promise。
135
+ */
136
+ export function addAlias(alias: string): Promise<void> {
137
+ return AliPushNative.addAlias(alias);
138
+ }
139
+
140
+ /**
141
+ * 移除别名。
142
+ *
143
+ * @param alias - 待移除的别名。
144
+ * @returns 操作完成的 Promise。
145
+ */
146
+ export function removeAlias(alias: string): Promise<void> {
147
+ return AliPushNative.removeAlias(alias);
148
+ }
149
+
150
+ /**
151
+ * 列出当前已添加的别名。
152
+ *
153
+ * @returns 解析为服务端响应字符串(含别名列表)的 Promise。
154
+ */
155
+ export function listAliases(): Promise<string> {
156
+ return AliPushNative.listAliases();
157
+ }
158
+
159
+ /**
160
+ * 设置应用角标(桌面图标右上角数字)。
161
+ *
162
+ * @param badge - 角标数字,`0` 表示清除。
163
+ * @returns 操作完成的 Promise。
164
+ */
165
+ export function setApplicationIconBadgeNumber(badge: number): Promise<void> {
166
+ return AliPushNative.setApplicationIconBadgeNumber(badge);
167
+ }
168
+
169
+ /**
170
+ * 获取应用当前角标数字。
171
+ *
172
+ * @returns 解析为当前角标数字的 Promise。
173
+ */
174
+ export function getApplicationIconBadgeNumber(): Promise<number> {
175
+ return AliPushNative.getApplicationIconBadgeNumber();
176
+ }
177
+
178
+ /**
179
+ * 获取 App 冷启动(被通知唤起)时缓存的首条推送消息。
180
+ *
181
+ * @remarks
182
+ * 当 App 完全退出后被通知点击唤起,JS 尚未完成订阅的窗口期内到达的消息会被原生端
183
+ * 缓存,待 JS 就绪后通过此方法或 {@link ALI_PUSH_EVENT} 事件返回。
184
+ *
185
+ * @returns 缓存消息对象,无则 `null`。
186
+ */
187
+ export function getInitialMessage(): Promise<AliPushMessage | null> {
188
+ return AliPushNative.getInitialMessage();
189
+ }
190
+
191
+ /**
192
+ * 获取 iOS 通知授权状态。
193
+ *
194
+ * @remarks Android 平台固定返回 `true`(Android 不做通知权限前置拦截)。
195
+ *
196
+ * @returns 解析为是否已授权的布尔值 Promise。
197
+ */
198
+ export function getAuthorizationStatus(): Promise<boolean> {
199
+ return AliPushNative.getAuthorizationStatus();
200
+ }
201
+
202
+ /**
203
+ * 将角标数字同步到阿里云服务端。
204
+ *
205
+ * @remarks 仅 iOS 有效,Android 为无操作。
206
+ *
207
+ * @param badge - 角标数字。
208
+ * @returns 操作完成的 Promise。
209
+ */
210
+ export function syncBadgeNum(badge: number): Promise<void> {
211
+ return AliPushNative.syncBadgeNum(badge);
212
+ }
213
+
214
+ /**
215
+ * 订阅推送消息事件。
216
+ *
217
+ * @param event - 事件名,本库仅支持 {@link ALI_PUSH_EVENT}(`'aliyunPushReceived'`)。
218
+ * @param listener - 回调,参数为 {@link AliPushMessage}。
219
+ * @returns 退订函数,调用即可取消该监听。
220
+ *
221
+ * @example
222
+ * ```ts
223
+ * const unsubscribe = AliPush.addEventListener('aliyunPushReceived', (msg) => {
224
+ * console.log('收到推送', msg.title, msg.body);
225
+ * });
226
+ * // 不再需要时
227
+ * unsubscribe();
228
+ * ```
229
+ */
230
+ export function addEventListener(
231
+ event: AliPushEvent,
232
+ listener: (message: AliPushMessage) => void,
233
+ ): () => void {
234
+ if (event !== ALI_PUSH_EVENT) {
235
+ console.warn(`[react-native-nitro-ali-push] Unsupported event: ${event}`);
236
+ return () => {};
237
+ }
238
+ return AliPushNative.addListener(listener);
239
+ }
240
+
241
+ /**
242
+ * 取消订阅推送消息事件。
243
+ *
244
+ * @param unsubscribe - {@link addEventListener} 返回的退订函数。
245
+ *
246
+ * @example
247
+ * ```ts
248
+ * AliPush.removeEventListener(unsubscribe);
249
+ * ```
250
+ */
251
+ export function removeEventListener(unsubscribe: () => void): void {
252
+ unsubscribe?.();
253
+ }
254
+
255
+ /**
256
+ * 默认导出对象(同时支持具名与默认导入)。
257
+ *
258
+ * @public
259
+ */
260
+ const AliPush = {
261
+ initPush,
262
+ getDeviceId,
263
+ bindAccount,
264
+ unbindAccount,
265
+ bindTag,
266
+ unbindTag,
267
+ listTags,
268
+ addAlias,
269
+ removeAlias,
270
+ listAliases,
271
+ setApplicationIconBadgeNumber,
272
+ getApplicationIconBadgeNumber,
273
+ getInitialMessage,
274
+ getAuthorizationStatus,
275
+ syncBadgeNum,
276
+ addEventListener,
277
+ removeEventListener,
278
+ /** 事件名常量,便于 `addEventListener(AliPush.ALI_PUSH_EVENT, ...)`。 */
279
+ ALI_PUSH_EVENT,
280
+ };
281
+
282
+ export { ALI_PUSH_EVENT };
283
+ export type { AliPushEvent, AliPushMessage, AliPushTagTarget };
284
+ export default AliPush;
@@ -0,0 +1,104 @@
1
+ /**
2
+ * 阿里云推送(react-native-nitro-ali-push)的 Nitro 原生接口规格。
3
+ *
4
+ * 本文件由 `nitrogen`(Nitro 代码生成器)读取,生成 C++ 桥接层以及 iOS Swift /
5
+ * Android Kotlin 的实现桩。每个方法签名即为 JS 调用名(驼峰),与
6
+ * {@link "../index"} 中的封装函数一一对应。
7
+ *
8
+ * 事件订阅采用 Nitro 的回调约定:`addListener` 接收一个 JS 回调,返回用于
9
+ * 退订的 `() => void` 闭包(Nitro 会自动跨语言封送函数类型)。
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import { type HybridObject, type AnyMap } from 'react-native-nitro-modules';
14
+
15
+ import type { AliPushMessage } from '../types';
16
+
17
+ /**
18
+ * 推送消息事件回调类型。
19
+ *
20
+ * 参数即 {@link AliPushMessage},由原生端通过 {@link AliPushPlugin.addListener}
21
+ * 注册的回调回传。
22
+ */
23
+ export type AliPushListener = (message: AliPushMessage) => void;
24
+
25
+ /**
26
+ * 阿里云推送原生模块(HybridObject)规格。
27
+ *
28
+ * - iOS 实现语言:`swift`(`HybridAliPushPlugin`)
29
+ * - Android 实现语言:`kotlin`(`HybridAliPushPlugin`)
30
+ *
31
+ * @public
32
+ */
33
+ export interface AliPushPlugin
34
+ extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
35
+ /**
36
+ * 初始化阿里云推送。
37
+ *
38
+ * - **Android**:通过 `appKey` / `appSecret` 向阿里云推送服务注册应用。
39
+ * - **iOS**:初始化在原生 `AppDelegate` 中完成(见 README),此方法为无操作。
40
+ */
41
+ initPush(appKey: string, appSecret: string): Promise<void>;
42
+
43
+ /** 获取设备唯一标识 `deviceId`。 */
44
+ getDeviceId(): Promise<string>;
45
+
46
+ /** 绑定账号。 */
47
+ bindAccount(account: string): Promise<void>;
48
+
49
+ /** 解绑账号。 */
50
+ unbindAccount(): Promise<void>;
51
+
52
+ /**
53
+ * 绑定标签。
54
+ *
55
+ * @param target 目标类型(1 设备 / 2 账号 / 3 别名)。
56
+ * @param tags 标签数组。
57
+ * @param alias 别名(可空)。
58
+ */
59
+ bindTag(target: number, tags: string[], alias: string | null): Promise<void>;
60
+
61
+ /**
62
+ * 解绑标签。
63
+ *
64
+ * @param target 目标类型(1 设备 / 2 账号 / 3 别名)。
65
+ * @param tags 标签数组。
66
+ * @param alias 别名(可空)。
67
+ */
68
+ unbindTag(target: number, tags: string[], alias: string | null): Promise<void>;
69
+
70
+ /** 列出当前标签(返回服务端响应字符串)。 */
71
+ listTags(target: number): Promise<string>;
72
+
73
+ /** 添加别名。 */
74
+ addAlias(alias: string): Promise<void>;
75
+
76
+ /** 移除别名。 */
77
+ removeAlias(alias: string): Promise<void>;
78
+
79
+ /** 列出当前别名(返回服务端响应字符串)。 */
80
+ listAliases(): Promise<string>;
81
+
82
+ /** 设置应用角标数字。 */
83
+ setApplicationIconBadgeNumber(badge: number): Promise<void>;
84
+
85
+ /** 获取应用当前角标数字。 */
86
+ getApplicationIconBadgeNumber(): Promise<number>;
87
+
88
+ /** 获取 App 冷启动(被通知唤起)时缓存的首条推送消息,无则 `null`。 */
89
+ getInitialMessage(): Promise<AliPushMessage | null>;
90
+
91
+ /** 获取 iOS 通知授权状态(Android 固定返回 `true`)。 */
92
+ getAuthorizationStatus(): Promise<boolean>;
93
+
94
+ /** 同步角标到阿里云服务端(仅 iOS 有效,Android 为无操作)。 */
95
+ syncBadgeNum(badge: number): Promise<void>;
96
+
97
+ /**
98
+ * 订阅推送消息事件。
99
+ *
100
+ * @param listener 收到消息时的回调。
101
+ * @returns 退订函数,调用即可取消该监听。
102
+ */
103
+ addListener(listener: AliPushListener): () => void;
104
+ }
package/src/types.ts ADDED
@@ -0,0 +1,117 @@
1
+ /**
2
+ * 阿里云推送(react-native-nitro-ali-push)相关的 TypeScript 类型定义。
3
+ *
4
+ * 这些类型既用于描述 JS 端 API 的入参/返回值,也用于描述原生端通过
5
+ * `aliyunPushReceived` 事件回传给 JS 的推送载荷结构。
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { type AnyMap } from 'react-native-nitro-modules';
10
+
11
+ /**
12
+ * 消息类型。
13
+ *
14
+ * - `'notification'` 通知栏消息;
15
+ * - `'message'` 透传 / 非通知栏消息。
16
+ *
17
+ * 抽成命名类型,供 Nitro 代码生成器(nitrogen)识别(内联联合类型不被支持)。
18
+ *
19
+ * @public
20
+ */
21
+ export type AliPushMessageType = 'notification' | 'message';
22
+
23
+ /**
24
+ * 收到消息时 App 所处的状态。
25
+ *
26
+ * - `'active'` 前台运行中;
27
+ * - `'inactive'` 非活跃(如来电打断);
28
+ * - `'background'` 后台。
29
+ *
30
+ * 抽成命名类型,供 Nitro 代码生成器识别。
31
+ *
32
+ * @public
33
+ */
34
+ export type AliPushAppState = 'active' | 'inactive' | 'background';
35
+
36
+ /**
37
+ * 推送载荷。
38
+ *
39
+ * 无论是「通知栏消息」(notification) 还是「透传/非通知栏消息」(message),
40
+ * 原生端通过 {@link ALI_PUSH_EVENT | `aliyunPushReceived`} 事件回传给 JS 的
41
+ * 数据结构都遵循此接口。
42
+ *
43
+ * @public
44
+ */
45
+ export interface AliPushMessage {
46
+ /** 通知标题。 */
47
+ title?: string;
48
+ /** 通知副标题(iOS 在前台/点击场景下可能携带)。 */
49
+ subtitle?: string;
50
+ /** 通知正文 / 内容。 */
51
+ body?: string;
52
+ /** 角标数字。 */
53
+ badge?: number;
54
+ /**
55
+ * 自定义键值对。
56
+ *
57
+ * 即推送后台设置的 `extras` / 业务参数,键为字符串,值可为字符串、数字、
58
+ * 布尔或嵌套结构(经 Nitro 的 {@link AnyMap} 跨语言封送)。
59
+ */
60
+ extras?: AnyMap;
61
+ /**
62
+ * 消息类型:
63
+ *
64
+ * - `'notification'` 通知栏消息;
65
+ * - `'message'` 透传 / 非通知栏消息。
66
+ */
67
+ type?: AliPushMessageType;
68
+ /**
69
+ * 点击行为标识:
70
+ *
71
+ * - `'opened'` 用户点击打开;
72
+ * - `'removed'` 用户删除;
73
+ * - 其它字符串表示自定义 action 标识。
74
+ */
75
+ actionIdentifier?: string;
76
+ /**
77
+ * 收到消息时 App 所处的状态:
78
+ *
79
+ * - `'active'` 前台运行中;
80
+ * - `'inactive'` 非活跃(如来电打断);
81
+ * - `'background'` 后台。
82
+ */
83
+ appState?: AliPushAppState;
84
+ /** 通知到达 / 点击的时间。iOS 为 `Date` 序列化后的值(数字时间戳或字符串)。 */
85
+ date?: number | string;
86
+ }
87
+
88
+ /**
89
+ * 本库支持监听的事件名。
90
+ *
91
+ * 目前仅支持 {@link ALI_PUSH_EVENT}。
92
+ *
93
+ * @public
94
+ */
95
+ export type AliPushEvent = typeof ALI_PUSH_EVENT;
96
+
97
+ /**
98
+ * 推送消息事件名常量。
99
+ *
100
+ * 通过 {@link addEventListener} 订阅,回调参数为 {@link AliPushMessage}。
101
+ *
102
+ * @public
103
+ */
104
+ export const ALI_PUSH_EVENT = 'aliyunPushReceived' as const;
105
+
106
+ /**
107
+ * 绑定 / 解绑标签时的目标类型。
108
+ *
109
+ * 对应阿里云推送 SDK 的 `target` 参数:
110
+ *
111
+ * - `1` 针对设备;
112
+ * - `2` 针对账号;
113
+ * - `3` 针对别名。
114
+ *
115
+ * @public
116
+ */
117
+ export type AliPushTagTarget = 1 | 2 | 3;