BBASMPlugin+Network.h
7.42 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
//
// BBASMPlugin+Network.h
// SWAN
//
// Created by baidu on 2017/11/28.
// Copyright © 2017年 baidu. All rights reserved.
//
#import "BBASMPlugin.h"
extern NSString * const BBASMNetworkModule;
extern NSString * const ProgressJSCallBackKey;
extern NSString * const CompleteJSCallBackKey;
extern int const kBBASM_UNKNOWN_CONTENT_LENGTH;
// 前端将arraybuffer base64编码通过key 传入端 端解码之后再存到key data中
// data 数据类型 'arrayBuffer'、'base64'、'jsonString'
extern NSString *const BBASMPluginNetworkRequestDataTypeKey;
// 请求的data数据类型为base64
extern NSString *const BBASMPluginNetworkRequestDataTypeBase64;
// 请求的data数据类型为arrayBuffer
extern NSString *const BBASMPluginNetworkRequestDataTypeArrayBuffer;
// 请求的data数据类型为前端序列化后的string(保证三端序列化结果一致)
extern NSString *const BBASMPluginNetworkRequestDataTypeJSONToString;
// arrayBuffer data 超过10MB
extern NSString *const BBASMPluginNetworkRequestArrayBufferSizeLimitError;
@interface BBASMPlugin (Network)
/**
* 描 述: 发起网络请求
* 示 例: baiduboxapp://swanAPI/request?params={"url":"https://feed.baidu.com/feed/api/getdislike?id=001&type=news","method":"POST","data":{"abc":"111"},"dataType":"json","cb":"_bdbox_pjs_884"}&callback=_bdbox_js_332&upgrade=0&oauthType=swan
* 文 档: http://ft.baidu.com/#/scheme/swan_request
* 备 注:
* ********** description ************
* @name: request
* @authority: swanAPI
* @path: /request
* @args: [{"name": "url", "value": "string"}, {"name": "data", "value": "string|object="}, {"name": "header", "value": "object="}, {"name": "method", "value": "string="}, {"name": "__requestDataType__", "value": "string="}, {"name": "dataType", "value": "string="}, {"name": "responseType", "value": "string="}, {"name": "ping", "value": "boolean="}, {"name": "cb", "value": "string"}, {"name": "ext", "value": "object="}, {"name": "__plugin__", "value": "string="}, {"name":"cloudCache","value":"boolean|object="}]
* @config: {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.networkBridge.request"}}}
*/
- (void)request:(BBASchemeDispatcher *)dispatcher;
/**
* 描 述: 将本地资源上传到指定服务器
* 示 例: baiduboxapp://swanAPI/uploadFile?params=%7B%22name%22%3A%22file%22%2C%22header%22%3A%7B%22Cache-Control%22%3A%22no-cache%22%2C%22x-baiduboxapp%22%3A%22demo%22%7D%2C%22formData%22%3A%7B%22user%22%3A%22test%22%7D%2C%22url%22%3A%22http%3A%2F%2Fhz01-plattech-rdqa02.hz01.baidu.com%3A8964%2Ftest_upload.php%22%2C%22filePath%22%3A%22bdfile%3A%2F%2Ftmp_123%22%2C%22onProgressUpdate%22%3A%22_onProgressUpdate_0219%22%2C%22cb%22%3A%22_uploadTask_cb_0219%22%7D&callback=_bdbox_js_979&upgrade=0
* 文 档: http://ft.baidu.com/#/scheme/swan_uploadfile
* 备 注:
* ********** description ************
* @name: uploadFile
* @authority: swanAPI
* @path: /uploadFile
* @args: [{"name": "url", "value": "string"}, {"name": "header", "value": "object="}, {"name": "filePath", "value": "string"}, {"name": "formData", "value": "object="}, {"name": "name", "value": "string"}, {"name": "onProgressUpdate", "value": "string"}, {"name": "cb", "value": "string"}, {"name": "__plugin__", "value": "string="}, {"name": "headersReceivedEvent", "value": "string="}]
* @config: {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
*/
- (void)uploadFile:(BBASchemeDispatcher *)dispatcher;
/**
* 描 述: 下载指定资源到本地
* 示 例: baiduboxapp://swanAPI/downloadFile?params=%7B%22header%22%3A%7B%22Cache-Control%22%3A%22no-cache%22%2C%22x-baiduboxapp%22%3A%22demo%22%7D%2C%22url%22%3A%22http%3A%2F%2Fcp01-qa-lvyou-001.cp01.baidu.com%3A8080%2Fstatic%2Fjssdk-test%2Foutput.zip%22%2C%22onProgressUpdate%22%3A%22_onProgressUpdate_1521371871084%22%2C%22cb%22%3A%22_filetask_cb_%22%7D&callback=_bdbox_js_569&upgrade=0
* 文 档: http://ft.baidu.com/#/scheme/swan_downloadfile
* 备 注:
* ********** description ************
* @name: downloadFile
* @authority: swanAPI
* @path: /downloadFile
* @args: [{"name": "url", "value": "string"}, {"name": "filePath", "value": "string="}, {"name": "header", "value": "object="}, {"name": "onProgressUpdate", "value": "string"}, {"name": "cb", "value": "string"}, {"name": "filePath", "value": "string="}, {"name": "__plugin__", "value": "string="}, {"name": "headersReceivedEvent", "value": "string="}]
* @config: {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
*/
- (void)downloadFile:(BBASchemeDispatcher *)dispatcher;
/**
* 描 述: 网络状态改变通知
* 示 例: baiduboxapp://swanAPI/networkStatusChange?params={"cb":"_bdbox_js_255"}&callback=_bdbox_js_238&upgrade=0
* 文 档: http://ft.baidu.com/#/scheme/swan_networkstatuschange
* 备 注: 小程序注册一个二级回调, 生命周期与小程序相同. 当网络状态变化时执行回调并不注销, 可多次执行.
* ********** description ************
* @name: onNetworkStatusChange
* @authority: swanAPI
* @path: /networkStatusChange
* @args: [{"name": "cb", "value": "string"}]
* @config: {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.networkBridge.networkStatusChange"}}}
*/
- (void)networkStatusChange:(BBASchemeDispatcher *)dispatcher;
/**
* 描 述: 获取网络类型
* 示 例: baiduboxapp://swanAPI/getNetworkType?callback=_bdbox_js_742&upgrade=0&oauthType=swan
* 文 档: http://ft.baidu.com/#/scheme/utils_getnetworktype
* 备 注:
* ********** description ************
* @name: getNetworkType
* @authority: swanAPI
* @path: /getNetworkType
* @args: []
* @config: {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.networkBridge.getNetworkType"}}}
*/
- (void)getNetworkType:(BBASchemeDispatcher *)command;
/**
* 描 述: 中断请求scheme
* 示 例: baiduboxapp://swanAPI/cancelRequest?params=\$params&callback=\$callback
* 文 档: http://ft.baidu.com/#/scheme/swan_cancelrequest
* 备 注:
* ********** description ************
* @name: cancelRequest
* @authority: swanAPI
* @path: /cancelRequest
* @args: [{"name": "cancelTag", "value": "string="}, {"name": "taskIdentifier", "value": "string="}]
* @config: {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
*/
- (void)cancelRequest:(BBASchemeDispatcher*)dispatcher;
#pragma mark - not API
+ (NSDictionary *)getNetworkTypeWithAppID:(NSString *)appId;
+ (NSDictionary *)networkStatusChangeWithAppID:(NSString *)appId
params:(NSDictionary *)params
completion:(void (^)(NSDictionary *status))completion;
/**
* @brief 发起网络请求
* @param appId 小程序appId
* @param params 端能力参数
* @param completion 异步callback
* @return NSDictionay 调用结果
*/
+ (NSDictionary *)requestWithAppID:(NSString *)appId
params:(NSDictionary *)params
completion:(void (^)(NSDictionary *status))completion;
@end