BBASMServiceProtocol.h
12.8 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
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
//
// BBASMServiceProtocol.h
// SWAN
//
// Created by baidu on 2018/3/23.
// Copyright © 2018年 baidu. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <Pyramid/Pyramid.h>
#import "BBASMDefine.h"
#import <BBASchemeDispatcher/BBASchemeDispatcher.h>
#import "BBASMRenderViewProtocol.h"
NS_ASSUME_NONNULL_BEGIN
typedef void(^JobSucceccCallBack)(id job);
AliasService(BBASMServiceProtocol, bba_MNP)
extern NSString * const BBASMAppXPDataChangeNotification;
@protocol BBASMServiceProtocol <NSObject>
/// 根据appId删除小程序硬盘缓存
+ (void)removeLocalServiceForAppId:(NSString *)appId scene:(BBASMAppCleanScene)cleanScene;
/**
* @brief 删除所有历史小程序/游戏的本地资源
*
*/
+ (void)removeAllLocalServicesInHistory;
/// 删除全部小程序硬盘缓存并保留历史记录,用于个人中心清理缓存功能
+ (void)removeAllLocalServicesRemainHistory;
/// 获取小程序沙箱缓存所占空间大小
+ (long long)calculateCachesSize;
/// 获取当前小程序的场景值
+ (NSString*)getSceneValue;
/// 获取当前小程序的搜索参数
+ (NSDictionary *)getBaidusearchObject;
/// 获取当前小程序的app id
+ (NSString*)currentBBASMAppId;
/// 获取当前小程序的app icon
+ (NSString *)getAppIconPath;
/// 获取当前小程序的app 框架版本号
+ (NSString *)getAppCoreVersion:(NSString *)appID;
/// 当前小程序是否是小游戏
+ (BOOL)currentAppIsGame:(NSString *)appID;
/// 添加信息日志--非页面切换
+ (void)addInfoLog:(NSString *)content
module:(NSString *)module
action:(NSString *)action;
/// 重置授权
+ (void)resetServiceAuthorizeRecordWithIDs:(NSArray *)appIDs;
/// 清除本地缓存的授权信息
+ (void)removeLocalAuthorizeInfoWithAppID:(NSString *)appID;
/// 删除缓存时删除授权所有数据
+ (void)removeAllAuthorizeInfo;
/// 获取小程序当前运行的上下文
+ (NSString *)getSMContext;
/// 获取小程序crash参数
+ (NSString *)getCrashParams;
/// 获取当前小程序页面url
+ (NSString *)getCurrentSlaveWebViewUrl;
/// 发送调起支付的UBC打点信息
+ (void)sendWalletUBCMessage:(NSDictionary *)dictionary
appId:(NSString *)appId;
/// 是小程序的scheme
+ (BOOL)isLaunchMNP:(NSString *)scheme;
/// 是否为小.程.序的调起协议
/// @param scheme scheme
+ (BOOL)isMNPLaunchScheme:(NSString *)scheme;
/// 预加载swancore接口
+ (void)preloadSMCore:(BBASMCorePreloadScene)scene;
/// 清除所有预加载环境
+ (void)clearAllPreload;
/// 小程序功能是否可用 支持最低版本的系统为iOS9
+ (BOOL)enableMNP;
/**
* @brief 是否只在wifi下预下载feed小程序
*
* @return YES,只wifi
*/
+ (BOOL)enablePreloadFromFeedOnlyWifi;
/**
* @brief 根据appId返回app类型的string
*
* @return 小程序返回swan,小游戏返回swangame,其他返回unknown
*/
+ (NSString *)appTypeString:(NSString *)appId;
// 尝试静默更新
+ (void)trySilentUpdateWithScene:(BBASMAppPreDownloadScene)scene;
// 预处理-预取或预下载
+ (void)preprocessSMWithAppID:(NSString *)appID
appTypeString:(NSString *)appTypeString
params:(NSDictionary *)paramDic
scene:(BBASMAppPreDownloadScene)scene
callBack:(nullable void(^)(BOOL succeed))callBack;
// 预下载小程序业务包
+ (void)preDownloadAppPackageWithAppIDs:(NSArray *)appIDs
appTypeString:(NSString *)appTypeString
scene:(BBASMAppPreDownloadScene)scene
callBack:(nullable void(^)(BOOL succeed))callBack;
// 根据小.程.序调起scheme预下载小.程.序业务包
/// @param schemes 小.程.序调起协议
/// @param appTypeString app类型
/// @param scene 场景
/// @param callBack callback
+ (void)preDownloadAppPackageWithSchemes:(NSArray *)schemes
appTypeString:(NSString *)appTypeString
scene:(BBASMAppPreDownloadScene)scene
callBack:(nullable void(^)(BOOL succeed))callBack;
// 根据scheme预下载小程序业务包 - splash使用
+ (void)preDownloadAppPackageWithScheme:(NSString *)scheme
callBack:(void(^)(BOOL succeed))callBack;
/// 取消预下载小程序包
+ (void)cancelPreDownloadAppPackageWithAppID:(NSString *)appID;
/// 小程序是否已经下载了
+ (BOOL)appHasPrefetchedWithAppID:(NSString *)appID;
/// 当前小程序/小游戏最顶层的VC
+ (UIViewController *)topViewController;
/**
* @brief 收藏我的小程序
* @param appid 被收藏的小程序的appid
* @return 是否执行成功
*/
+ (BOOL)addFavorWithAppid:(NSString *)appid;
/**
* @brief 移除我的小程序
* @param appid 被移除的小程序的appid
* @return 是否执行成功
*/
+ (BOOL)deleteFavorWithAppid:(NSString *)appid;
/**
* @brief 将小程序移动至最前面
* @param appid 被移动的小程序的appid
* @return 是否执行成功
*/
+ (BOOL)topFavorWithAppid:(NSString *)appid;
/**
* @brief 更新小程序关注状态
*
* @param appID 小程序appID
* @param isFavorite 小程序需要更新的状态
* @return 更新小程序关注状态是否成功
*/
+ (BOOL)updateMNPFavoriteStatus:(NSString *)appID isFavorite:(BOOL)isFavorite;
/**
* @brief 更新xcx是否是新增关注
*
* @param appID xcx appID
* @param isNewFavor 需要更新的状态
* @return 更新xcx关注状态是否成功
*/
+ (BOOL)updateFavorStatus:(NSString *)appID isNewFavor:(BOOL)isNewFavor;
/**
* @brief 当前小程序是否已经被收藏
* @param appid 小程序的appid
* @return 是否已经被收藏
*/
+ (BOOL)isFavorWithAppid:(NSString *)appid;
/**
* @brief 获取收藏小程序列表
*
* @param isNeedUpdate 是否需要异步拉取server端数据更新本地数据
* @return 收藏小程序列表
*/
+ (NSArray *)getFavorListWithAsyncUpdate:(BOOL)isNeedUpdate;
/**
* @brief 删除指定小程序历史
* @param appid 待删除小程序的appid
* @return 是否执行成功
*/
+ (BOOL)deleteHistoryWithAppid:(NSString *)appid;
/**
* @brief 删除所有小程序历史
*
* @return 是否执行成功
*/
+ (BOOL)deleteAllHistory;
/**
* @brief 获取小程序历史数据
*
* @return 历史数据列表
*/
+ (NSArray *)getHistoryList;
/**
* @brief 获取小程序历史数据
* @param isNeedUpdate 是否需要异步拉取server端数据更新本地数据
* @return 历史数据列表
*/
+ (NSArray *)getHistoryListWithAsyncUpdate:(BOOL)isNeedUpdate;
/**
* @brief 获取小程序历史数据
* @param from 来源值
* @return 历史数据列表
*/
+ (NSArray *)getHistoryListWithFromId:(NSString *)from;
/**
* @brief 根据指定参数获取小程序/小游戏scheme
* @param appId 小程序id
* @param frameType 小程序类型
* @param from 小程序来源
* @return scheme
*/
+ (NSString *)generateMNPSchemeByAppid:(NSString *)appId
frameType:(NSString *)frameType
from:(NSString *)from;
/// 到达率打点
+ (void)mnpEntranceStatistics:(NSString *)shemeUrl
sourceFrom:(NSString *)sourceFrom;
/**
* @brief 当前 App apiQueue 增加 job
* 请在调用本方法完成之后适时调用 removeJobFromCurrentAppApiQueueWithAppID:job: 方法
* @param appID appID
* @param jobName jobName
* @param succeedCallback succeedCallback
* @param errorCallback errorCallback
*/
+ (void)addJobToCurrentAppApiQueueWithAppID:(NSString*)appID
jobName:(NSString*)jobName
succeed:(JobSucceccCallBack)succeedCallback
error:(dispatch_block_t)errorCallback;
/**
* @brief 从当前 App apiQueue 移除 job
* 配合 addJobToCurrentAppApiQueueWithAppID:jobName:succeed:error: 使用,有添加,就有remove
* @param appID appID
* @param job BBASMAPIJob
*/
+ (void)removeJobFromCurrentAppApiQueueWithAppID:(NSString *)appID
job:(id)job;
/**
给指定的小程序邦定一个object
如果key已经绑定过 则更新
@param context 上下文信息
@param key context 的key
@param appID appid
*/
+ (void)setAssociateObject:(id)context
forKey:(NSString *)key
appID:(NSString *)appID;
/**
获取绑定的object
@param key context 的key
@param appID appid
@return context
*/
+ (id)associateObjectForKey:(NSString *)key
appID:(NSString *)appID;
/**
* @brief 根据appId判断当前时间游戏banner广告显示时机是否过早
*
* @return 是返回YES,否则返回NO
*/
+ (BOOL)isGameBannerShowEarly:(NSString *)appId;
/**
尝试调起手百登录页面
@param appId 小程序appId
@param succeedCallback 登录或检测成功回调
@param errorCallback 登录或检测失败回调
*/
+ (void)checkAndTryLoginUserAppId:(NSString *)appId
succeed:(void(^)(void))succeedCallback
error:(void(^)(void))errorCallback;
/**
获取小程序框架版本号
*/
+ (NSString *)getBBASMNativeVersion;
/**
* @brief 获取所有APS的小程序信息字典(以appId为键值)
*
* @return 字典(以appId为键值)
*/
+ (nullable NSDictionary *)fetchAllMNPConfig;
/**
* @brief 获取所有的小程序PMS下载信息字典(以appId为键值)
*
* @return 字典(以appId为键值)
*/
+ (nullable NSDictionary *)fetchAllMNPPMSConfig;
/**
* @brief 手动上传截图或者小程序 clone 包信息
*
* @param senece 场景值scene: white_screen/clone_swan
* @param uploadData 加密过的
* @param parameterDict 上传携带的参数信息
*/
+ (void)manualReportWithSence:(NSString *_Nullable)senece uploadData:(NSData *_Nonnull)uploadData parameterDict:(NSMutableDictionary *_Nonnull)parameterDict;
/**
* @brief 关闭小程序数据库
*
* @return 是否关闭小程序数据库成功 YES,为成功
*/
+ (BOOL)closeDatabase;
/**
* @brief 获取当前小程序的consoleLogs
*
* @return (NSArray<NSString *> *)当前小程序的consoleLogs
*/
+ (NSArray<NSString *> *_Nullable)currentConsoleLogs;
/// xcx是否加载失败
+ (BOOL)isSMAppLoadErrorWithAppID:(NSString *)appID;
/// 仅小程序加载失败,反馈入口
/// @param appID appID
+ (void)feedbackWhenSMAppLoadError:(NSString *)appID;
/// 登录来源上报接口
/// @param loginAlready 调用登录功能之前是否登录(调用登录功能之前,如果已经登录成功 则不打点)
/// @param scene 登录功能触发场景
/// @param status 登录状态(登录展示,登录功能完成)
/// @param invokeFrom 调用登录的来源(api/component/na)
/// @param appId 调用接口的xcx appId
+ (void)reportLoginInfoWithLoginAlready:(BOOL)loginAlready
scene:(BBASMLoginScene)scene
status:(BBASMLoginStatus)status
invokeFrom:(NSString *)invokeFrom
appId:(NSString *)appId;
# pragma mark - UnionAccount
/**
* @brief 宿主退出联盟登录
*/
+ (void)unionAccountLogOut;
/**
* @brief 获取到联盟登录bduss
* @return 登录成功的bduss
*/
+ (NSString *)getUnionBduss;
/// 账号是否登录
+ (BOOL)isLoggedIn;
/// 是否是游客登录
+ (BOOL)isGuest;
/// 调用登录接口
/// @param loginCompletionBlock 结果回调
+ (void)login:(void (^)(BOOL success))loginCompletionBlock;
/// 获取用户账号信息
+ (NSDictionary *)getUserInfo;
#pragma mark - LifeCycle Notification
/**
* @brief 获取xcx即将进场展现的通知名称 (包括首次进场和从其它界面回退展现)
* @return notificationName
*/
+ (nonnull NSString *)appOnShowNotificationName;
/**
* @brief 获取xcx退场展现的通知名称 (移出宿主导航栈)
* @return notificationName
*/
+ (nonnull NSString *)appOnHideNotificationName;
/**
* @brief 获取xcx状态变更为非活跃状态的通知名称 (区别于退场,是被其它页面覆盖消失而触发的通知)
* @return notificationName
*/
+ (nonnull NSString *)appOnResignActiveNotificationName;
/**
* @brief 从app队列里面清除BBASMApp
*
* @param appId appId
*/
+ (void)removeActiveItem:(NSString *)appId;
// 第一个页面渲染完成的通知
+ (NSString *)getFirstPageDidRenderByNANoticeName;
// 第一个页面FMP通知
+ (NSString *)getFirstScreenPaintDateByNANoticeName;
// 第一个页面FCP通知
+ (NSString *)getFirstPaintDateByNANoticeName;
+ (NSString *)getCorrectScreenPaintDateByNANoticeName;
// 第一个起播终点通知
+ (NSString *)getVideoPlaySuccessDateByNANoticeName;
/// @brief 派发topPages 事件(提前加载资源)
/// @param slaveWebview 派发事件的 webView
/// @param appID appID
+ (void)dispatchPreloadTopPagesResEvent:(NSObject<BBASMRenderViewProtocol> *)slaveWebview
appID:(NSString *)appID;
@end
NS_ASSUME_NONNULL_END