BBASMPMSCommon.h
9.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
//
// BBASMPMSCommon.h
// SWAN
//
// Created by baidu on 2018/11/2.
// Copyright © 2018 baidu. All rights reserved.
//
#ifndef BBASMPMSCommon_h
#define BBASMPMSCommon_h
NS_ASSUME_NONNULL_BEGIN
#pragma mark - PMS api url path
static NSString * const kBBASMPMSAppPackageURLPath = @"pms/getpkg";
static NSString * const kBBASMPMSCorePackageURLPath = @"pms/updatecore";
static NSString * const kBBASMPMSAppPackageListURLPath = @"pms/fetchpkglist";
static NSString * const kBBASMPMSPluginURLPath = @"pms/getplugin";
static NSString * const BBASMPMSGetOpenbundleidURLPath = @"pms/getopenbundleid";
static NSString * const kBBASMPMSAppDepPackageListURLPath = @"pms/getdeplist";
#pragma mark - PMS api request parameter and response field
static NSString * const kBBASMPMSKeyPackageID = @"bundle_id";
static NSString * const kBBASMPMSKeyPackageVersion = @"pkg_ver";
static NSString * const kBBASMPMSKeyVersionCode = @"version_code";
static NSString * const kBBASMPMSKeyVersionName = @"version_name";
static NSString * const kBBASMPMSKeyAppState = @"pkg_type";
static NSString * const kBBASMPMSKeyCategory = @"category";
static NSString * const kBBASMPMSKeyFrameworkVersion = @"framework_ver";
static NSString * const kBBASMPMSKeyExtensionVersion = @"extension_ver";
static NSString * const kBBASMPMSKeyPluginVersion = @"plugin_ver";
static NSString * const kBBASMPMSKeyPluginVerCode = @"plugin_vercode";
static NSString * const kBBASMPMSKeyDownloadType = @"from";
static NSString * const kBBASMPMSKeyList = @"list";
static NSString * const kBBASMPMSKeyPagePath = @"path";
static NSString * const kBBASMPMSKeySubPackageID = @"sub_id";
static NSString * const kBBASMPMSKeySize = @"size";
static NSString * const kBBASMPMSKeyMD5 = @"md5";
static NSString * const kBBASMPMSKeyPackageSignature = @"sign";
static NSString * const kBBASMPMSKeyAppSignature = @"app_sign";
static NSString * const kBBASMPMSKeyDownloadUrl = @"download_url";
static NSString * const kBBASMPMSKeyIndependent = @"independent";
static NSString * const kBBASMPMSKeySubPath = @"sub_path";
static NSString * const kBBASMPMSKeyMaxAge = @"max_age";
static NSString * const kBBASMPMSKeyRetry = @"retry";
static NSString * const kBBASMPMSKeyExt = @"ext";
static NSString * const kBBASMPMSKeyDep = @"dep";
/// xcx调起时生成的唯一标识
static NSString *const BBASMPMSKeyLaunchID = @"launchid";
// 期望版本号,指定版本号进行下发
static NSString * const kBBASMPMSKeyExpectPackageVersion = @"expect_pkg_ver";
// appkey
static NSString *const BBASMPMSAppKey = @"appkey";
#define kBBASMPMSKeySMCoreVersion BBASM_JOIN_STR_METHOD(BBASM_LOWERCASE_STR, @"_core", @"_ver") //@"swan_core_ver"
#define kBBASMPMSKeySMGameVersion BBASM_JOIN_STR_METHOD(BBASM_LOWERCASE_STR, @"_game", @"_ver") //@"swan_game_ver"
#define kBBASMPMSKeySMExtensionVersion BBASM_JOIN_STR_METHOD(BBASM_LOWERCASE_STR, @"_ext", @"_ver") //@"swan_ext_ver"
// 小程序框架包版本号 @"swan_vercode"
#define kBBASMPMSKeySMCoreVerCode BBASM_JOIN_STR_METHOD(BBASM_LOWERCASE_STR, @"_vercode", @"")
// 宿主扩展包版本 @"swan_ext_vercode"
#define kBBASMPMSKeySMExtVerCode BBASM_JOIN_STR_METHOD(BBASM_LOWERCASE_STR, @"_ext", @"_vercode")
static NSString * const kBBASMPMSKeyGameExtensionVersion = @"game_ext_ver";
// 小游戏框架包版本号
static NSString *const kBBASMPMSKeyGameVerCode = @"game_vercode";
// 游戏扩展包版本
static NSString *const kBBASMPMSKeyGameExtVerCode = @"game_ext_vercode";
static NSString * const kBBASMPMSKeyFrameworks = @"framework";
static NSString * const kBBASMPMSKeyExtensions = @"extension";
#pragma mark - PMS Enumeration
/// PMS package download type.
typedef NS_ENUM(NSInteger, BBASMPMSAppDownloadType) {
BBASMPMSAppDownloadTypePreDownload = 1, ///< Get app package in a pre-download way.
BBASMPMSAppDownloadTypeSilentUpdate = 2, ///< Update app on background when the app is not running.
BBASMPMSAppDownloadTypeSyncDownload = 3, ///< Synchronously force update app.
BBASMPMSAppDownloadTypeAsyncUpdate = 4, ///< Update app on background when the app is running.
};
/// PMS App package state.
typedef NS_ENUM(NSUInteger, BBASMPMSAppState) {
BBASMPMSAppStateReleased = 0, ///< 默认类型 @"default" 正式版本
BBASMPMSAppStateDeveloping = 1, ///< 开发版类型 @"dev"
BBASMPMSAppStateInReview = 2, ///< 审核版类型 @"trial"
BBASMPMSAppStateExperience = 3 ///< 体验版类型 @"experience"
};
/// PMS package type, it could be app main package, sub package, swan core, game core or swan extension.
typedef NS_ENUM(NSInteger, BBASMPMSPackageType) {
BBASMPMSPackageTypeUnknow = -1, ///< Package unknow.
BBASMPMSPackageTypeAppMain = 0, ///< App main package.
BBASMPMSPackageTypeAppSub, ///< App sub page package.
BBASMPMSPackageTypeFramework, ///< Means swan core or game core.
BBASMPMSPackageTypeExtension, ///< Swan extension
BBASMPMSPackageTypePlugin ///< Plugin or Dynamic Library etc. Some little package download with `getplugin` API.
};
typedef NS_OPTIONS(NSInteger, BBASMPMSTaskCase) {
BBASMPMSTaskCaseNone = 0,
BBASMPMSTaskCaseMain = 1 << 0,
BBASMPMSTaskCaseSub = 1 << 1,
BBASMPMSTaskCaseFramework = 1 << 2,
BBASMPMSTaskCaseExtension = 1 << 3
};
/// App type. Swan app, game app or plugin.
typedef NS_ENUM(NSInteger, BBASMPMSCategory) {
BBASMPMSCategoryNotSet = -1,
BBASMPMSCategoryApp = 0,
BBASMPMSCategoryGame = 1,
BBASMPMSCategoryDebugPlugin = 2,
BBASMPMSCategoryDynamicLibrary = 3, /// 动态库
BBASMPMSCategoryMapCustomStyle = 4, /// 地图个性化
BBASMPMSCategoryDependenceStyle = 6 /// 扩展包
};
#pragma mark - PMS call back block
@class BBASMPMSPackage;
@class BBASMAppMetaInfo;
/**
* PMS app info block.
*
* @param appInfo App info model.
* @param taskCases Represent how many packages need to download.
* @param error Error info if exist.
*/
typedef void (^PMSAppInfoBlock)(BBASMAppMetaInfo * _Nullable appInfo,
BBASMPMSTaskCase taskCases,
NSError * _Nullable error);
/**
* PMS app info block.
*
* @param appInfoList App info model list.
*/
typedef void (^PMSAppInfoListBlock)(NSArray<BBASMAppMetaInfo *> * _Nonnull appInfoList);
/**
* PMS package request call back.
*
* @param package The PMS package.
* @param error Error info if exist.
*
* @discussion Even if the `error` has a value, the `package` still maybe NOT nil.
* Check `error` to judge success or failure for the call back of this time.
*/
typedef void (^PMSPackageDownloadBlock)(BBASMPMSPackage * _Nullable package,
NSError * _Nullable error);
/**
* PMS completion common callback. Used for get package, update core, get plugin.
*
* @param isSuccess Task completion result.
* @param error Task failed detail error if exist.
*/
typedef void (^PMSCompletionBlock)(BOOL isSuccess,
NSError * _Nullable error);
/**
* PMS fetch app list api download callback.
*
* @param mainPakcage main package.
* @param subPackages sub packages belong to the mainPackage.
* @param error Error info if exist.
*/
typedef void (^PMSAppListDownloadBlock)(BBASMPMSPackage * _Nullable mainPakcage,
NSArray<BBASMPMSPackage *> * _Nullable subPackages,
NSError * _Nullable error);
/**
* PMS fetch app list api completion callback.
*
* @param errorDic A dictionary contains error info which key is `bundle_id`, value is a NSError instance.
*/
typedef void (^PMSAppListCompletionBlock)(NSDictionary<NSString *, NSError *> * _Nullable errorDic);
/**
* PMS fetch app remote update api completion callback.
*
* @param noUpdateAppIDs A array contains appIDs which have no update.
*/
typedef void (^PMSFetchUpdateCompletionBlock)(NSArray<NSString *> * _Nullable noUpdateAppIDs);
/**
* PMS download progress call back.
*
* @param downloadedBytes The downloaded bytes of the package.
* @param totalBytes The total bytes of the package.
*/
typedef void(^PMSDownloaderProgressBlock)(int64_t downloadedBytes, int64_t totalBytes);
/**
* PMS package downloader download completed call back.
*
* @param type The package type.
* @param zipPath Downloaded and zipFile path.
* @param error Error info if exist.
*
* @discussion Check `error` to judge success or failure for the call back
*/
typedef void (^PMSDownloaderDownloadCompletion)(BBASMPMSPackageType type,
NSString * _Nullable zipPath,
NSError * _Nullable error);
/**
* PMS package downloader unzip completed call back.
*
* @param type The package type.
* @param error Error info if exist.
*
* @discussion Check `error` to judge success or failure for the call back
*/
typedef void (^ _Nullable PMSDownloaderUnzipCompletion)(BBASMPMSPackageType type,
NSString * _Nullable packagePath,
NSError * _Nullable error);
/// PMS fetch dependencies list api download callback
/// @param package dependence package
/// @param error error info
typedef void (^PMSDependenciesDownloadBlock)(NSArray<BBASMPMSPackage *> * _Nullable package,
NSError * _Nullable error);
/// PMS fetch dependencies list api completion callback
/// @param errorDic dependencies error info dic
typedef void (^PMSDependenciesCompletionBlock)(NSDictionary<NSString *, NSError *> * _Nullable errorDic);
#endif /* BBASMPMSCommon_h */
NS_ASSUME_NONNULL_END