@scgczm/bridge 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.
package/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # app jsbridge
2
+
3
+ ## 支持 cjs、esm、umd 引入
4
+
5
+ ### esm 用法(cjs 同理)
6
+
7
+ #### 1、安装
8
+
9
+ ```shell
10
+ npm i @scgczm/bridge
11
+ ```
12
+
13
+ #### 2、使用
14
+
15
+ ```ts
16
+ import { scgcLogin } from "@scgczm/bridge";
17
+ scgcLogin();
18
+ ```
19
+
20
+ ### umd 用法
21
+
22
+ #### 1、引入
23
+
24
+ ```html
25
+ <script src="https://kscgc.sctv.com/sctv/dependencies/bridge/scgc_bridge.min.js"></script>
26
+ ```
27
+
28
+ #### 2、使用
29
+
30
+ ```js
31
+ window.scgcBridge.scgcLogin();
32
+ ```
33
+
34
+ ### bridge 方法列表
35
+
36
+ #### 1、同步方法
37
+
38
+ - scgcGetSlideData
39
+ - scgcLogin
40
+ - scgcScan
41
+ - scgcClose
42
+ - scgcOpenwechat
43
+ - scgcSaveimage
44
+ - scgcShare
45
+ - scgcToH5
46
+ - scgcToDetail
47
+ - scgcSetVolume
48
+ - scgcToSubSpecial
49
+ - scgcFocusWeb
50
+ - scgcToMall
51
+ - scgcToKuaipai
52
+ - scgcToAppHome
53
+ - scgcChangeStateBarColor
54
+ - scgcToLive
55
+ - scgcToSpecial
56
+ - scgcToTopic
57
+
58
+ #### 2、异步方法
59
+
60
+ - scgcGetUserId
61
+ - scgcGetAvatar
62
+ - scgcGetNickName
63
+
64
+ ### 工具方法
65
+
66
+ - isScgcApp
67
+
68
+ ### 开发模式
69
+
70
+ #### eg.
71
+
72
+ ```ts
73
+ import { setDevMode } from "@scgczm/bridge";
74
+ setDevMode();
75
+ ```
76
+
77
+ ##### 控制台会打印调用的参数等数据(建议使用 vconsole 查看)
@@ -0,0 +1,210 @@
1
+ import { ICommonResult } from "./utils";
2
+ export interface IGetSlideDataData {
3
+ token: string;
4
+ sessionId: string;
5
+ sig: string;
6
+ scene: string;
7
+ }
8
+ /**
9
+ * @description 阿里滑动验证(使用的旧版api,目前官方文档已散佚,可参考其他项目)
10
+ * @param {IGetSlideDataData} data
11
+ */
12
+ export declare const scgcGetSlideData: (data: IGetSlideDataData) => void;
13
+ /**
14
+ * @description 调用app登录
15
+ */
16
+ export declare const scgcLogin: () => void;
17
+ /**
18
+ * @description 调用app扫码
19
+ */
20
+ export declare const scgcScan: () => void;
21
+ /**
22
+ * @description 关闭当前webview
23
+ */
24
+ export declare const scgcClose: () => void;
25
+ export interface IOpenexplorerData {
26
+ path: string;
27
+ }
28
+ /**
29
+ * @description 使用系统浏览器打开指定的url
30
+ * @param {IOpenexplorerData} data
31
+ * @param {string} data.path 需要打开的url
32
+ */
33
+ export declare const scgcOpenexplorer: (data: IOpenexplorerData) => void;
34
+ export interface IOpenwechatData {
35
+ appid: string;
36
+ path: string;
37
+ }
38
+ /**
39
+ * @description 打开微信小程序
40
+ * @param {IOpenwechatData} data
41
+ * @param {string} data.appid 小程序appid,格式为gh开头
42
+ * @param {string} data.path 小程序路径
43
+ */
44
+ export declare const scgcOpenwechat: (data: IOpenwechatData) => void;
45
+ export interface ISaveimageData {
46
+ data: string;
47
+ }
48
+ /**
49
+ * @description 保存图片
50
+ * @param {ISaveimageData} data
51
+ * @param {string} data.data base64数据
52
+ */
53
+ export declare const scgcSaveimage: (data: ISaveimageData) => void;
54
+ export interface IShareData {
55
+ shareUrl?: string;
56
+ shareImg?: string;
57
+ shareTitle?: string;
58
+ shareDesc?: string;
59
+ doShare?: boolean;
60
+ }
61
+ /**
62
+ * @description 配置app分享
63
+ * @param {IShareData} data
64
+ * @param {string} data.shareUrl 需要分享的地址
65
+ * @param {string} data.shareImg 分享的封面
66
+ * @param {string} data.shareTitle 分享的标题
67
+ * @param {string} data.shareDesc 分享的说明
68
+ * @param {boolean} data.doShare 是否在调用bridge时立即触发app的分享,默认为仅修改配置
69
+ */
70
+ export declare const scgcShare: (data: IShareData) => void;
71
+ export interface ItoH5Data {
72
+ path: string;
73
+ }
74
+ /**
75
+ * @description 打开一个webview
76
+ * @param {ItoH5Data} data
77
+ * @param {string} data.path 需要打开的url
78
+ */
79
+ export declare const scgcToH5: (data: ItoH5Data) => void;
80
+ export interface IToDetailData {
81
+ path: string;
82
+ newsType?: number;
83
+ }
84
+ /**
85
+ * @description 打开app原生新闻页
86
+ * @param {IToDetailData} data
87
+ * @param {string} data.path 新闻json地址 --相对地址,没有域名前缀的形式
88
+ * @param {number} data.newsType 新闻类型 --1.图文 2.音频 3.视频 4.纯视频新闻 6 外链
89
+ */
90
+ export declare const scgcToDetail: (data: IToDetailData) => void;
91
+ export interface IToSpecialData {
92
+ id: string;
93
+ }
94
+ /**
95
+ * @description 打开app原生专题详情页
96
+ * @param {IToSpecialData} data
97
+ * @param {string} data.id 专题id
98
+ */
99
+ export declare const scgcToSpecial: (data: IToSpecialData) => void;
100
+ export interface IToLiveData {
101
+ id: string;
102
+ type: 1 | 2;
103
+ }
104
+ /**
105
+ * @description 打开app原生直播页
106
+ * @param {IToLiveData} data
107
+ * @param {string} data.id 直播id
108
+ * @param {string} data.type 直播样式 1 横版 2 竖版
109
+ */
110
+ export declare const scgcToLive: (data: IToLiveData) => void;
111
+ export interface IToTopicData {
112
+ name: string;
113
+ cover: string;
114
+ id: string;
115
+ }
116
+ /**
117
+ * @description 打开app话题页
118
+ * @param {IToTopicData} data
119
+ * @param {string} data.name 话题名称
120
+ * @param {string} data.cover 话题封面图(完整的图片地址)
121
+ * @param {string} data.id 话题id
122
+ */
123
+ export declare const scgcToTopic: (data: IToTopicData) => void;
124
+ export interface ISetVolumeData {
125
+ type: 0 | 1;
126
+ }
127
+ /**
128
+ * @description 设置app音量
129
+ * @param {ISetVolumeData} data
130
+ * @param {number} data.type 0 调小 1 调大
131
+ */
132
+ export declare const scgcSetVolume: (data: ISetVolumeData) => void;
133
+ export interface IToSubSpecialData {
134
+ title: string;
135
+ id: string;
136
+ }
137
+ /**
138
+ * @description 打开app原生专题新闻列表页
139
+ * @param {IToSubSpecialData} data
140
+ * @param {string} data.title 专题标题
141
+ * @param {string} data.id 专题id
142
+ */
143
+ export declare const scgcToSubSpecial: (data: IToSubSpecialData) => void;
144
+ export interface IMallDetailData {
145
+ json: string;
146
+ url: string;
147
+ ptype: "0";
148
+ isDark: 0 | 1;
149
+ }
150
+ /**
151
+ * @description 打开积分商城商品详情
152
+ * @param {IMallDetailData} data
153
+ * @param {string} data.json 商品详情json地址
154
+ * @param {string} data.url 商品详情网页地址
155
+ * @param {string} data.ptype todo 未知
156
+ * @param {number} data.isDark 0 普通模式 1 黑暗模式
157
+ */
158
+ export declare const scgcToMallDetail: (data: IMallDetailData) => void;
159
+ export interface IFocusWebData {
160
+ focus: boolean;
161
+ }
162
+ /**
163
+ * @description 是否禁用app左右滑动(主要用户嵌入在app首页的swiper,避免滑动swiper的情况下,会滑动app首页的tab页)
164
+ * @param {IMallDetailData} data
165
+ * @param {boolean} data.focus 是否禁止app滑动
166
+ *
167
+ */
168
+ export declare const scgcFocusWeb: (data: IFocusWebData) => void;
169
+ /**
170
+ * @description 跳转至积分商城
171
+ */
172
+ export declare const scgcToMall: () => void;
173
+ /**
174
+ * @description 跳转至快拍
175
+ */
176
+ export declare const scgcToKuaipai: () => void;
177
+ /**
178
+ * @description 跳转至app首页
179
+ */
180
+ export declare const scgcToAppHome: () => void;
181
+ export interface IChangeStateBarColorData {
182
+ type: 1 | 2;
183
+ }
184
+ /**
185
+ * @description 设置app顶部时间栏颜色
186
+ * @param {IChangeStateBarColorData} data
187
+ * @param {number} data.type 1 黑色 2 白色
188
+ *
189
+ */
190
+ export declare const scgcChangeStateBarColor: (data: IChangeStateBarColorData) => void;
191
+ /**
192
+ * @description 获取app 用户id
193
+ * @return {Promise((success:boolean,data:string))} 返回promise
194
+ *
195
+ */
196
+ export declare const scgcGetUserId: () => Promise<ICommonResult<string>>;
197
+ /**
198
+ * @description 获取app 用户头像
199
+ * @return {Promise((success:boolean,data:string))} 返回promise
200
+ *
201
+ */
202
+ export declare const scgcGetAvatar: () => Promise<ICommonResult<string>>;
203
+ /**
204
+ * @description 获取app 用户昵称
205
+ * @return {Promise((success:boolean,data:string))} 返回promise
206
+ *
207
+ */
208
+ export declare const scgcGetNickName: () => Promise<ICommonResult<string>>;
209
+ export declare const scgcGetPhoneNumber: () => Promise<ICommonResult<string>>;
210
+ export { setDevMode, isScgcApp } from "./utils";
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isScgcApp = exports.setDevMode = exports.scgcGetPhoneNumber = exports.scgcGetNickName = exports.scgcGetAvatar = exports.scgcGetUserId = exports.scgcChangeStateBarColor = exports.scgcToAppHome = exports.scgcToKuaipai = exports.scgcToMall = exports.scgcFocusWeb = exports.scgcToMallDetail = exports.scgcToSubSpecial = exports.scgcSetVolume = exports.scgcToTopic = exports.scgcToLive = exports.scgcToSpecial = exports.scgcToDetail = exports.scgcToH5 = exports.scgcShare = exports.scgcSaveimage = exports.scgcOpenwechat = exports.scgcOpenexplorer = exports.scgcClose = exports.scgcScan = exports.scgcLogin = exports.scgcGetSlideData = void 0;
4
+ /*#__PURE__*/
5
+ var utils_1 = require("./utils");
6
+ (0, utils_1.initAsyncCallbackPool)();
7
+ var commonBridge = (0, utils_1.commonBridgeFun)();
8
+ /**
9
+ * @description 阿里滑动验证(使用的旧版api,目前官方文档已散佚,可参考其他项目)
10
+ * @param {IGetSlideDataData} data
11
+ */
12
+ var scgcGetSlideData = function (data) {
13
+ commonBridge("getSlideData", data);
14
+ };
15
+ exports.scgcGetSlideData = scgcGetSlideData;
16
+ /**
17
+ * @description 调用app登录
18
+ */
19
+ var scgcLogin = function () {
20
+ commonBridge("login");
21
+ };
22
+ exports.scgcLogin = scgcLogin;
23
+ /**
24
+ * @description 调用app扫码
25
+ */
26
+ var scgcScan = function () {
27
+ commonBridge("scan");
28
+ };
29
+ exports.scgcScan = scgcScan;
30
+ /**
31
+ * @description 关闭当前webview
32
+ */
33
+ var scgcClose = function () {
34
+ commonBridge("close");
35
+ };
36
+ exports.scgcClose = scgcClose;
37
+ /**
38
+ * @description 使用系统浏览器打开指定的url
39
+ * @param {IOpenexplorerData} data
40
+ * @param {string} data.path 需要打开的url
41
+ */
42
+ var scgcOpenexplorer = function (data) {
43
+ commonBridge("openexplorer", data);
44
+ };
45
+ exports.scgcOpenexplorer = scgcOpenexplorer;
46
+ /**
47
+ * @description 打开微信小程序
48
+ * @param {IOpenwechatData} data
49
+ * @param {string} data.appid 小程序appid,格式为gh开头
50
+ * @param {string} data.path 小程序路径
51
+ */
52
+ var scgcOpenwechat = function (data) {
53
+ commonBridge("openwechat", data);
54
+ };
55
+ exports.scgcOpenwechat = scgcOpenwechat;
56
+ /**
57
+ * @description 保存图片
58
+ * @param {ISaveimageData} data
59
+ * @param {string} data.data base64数据
60
+ */
61
+ var scgcSaveimage = function (data) {
62
+ commonBridge("saveimage", data);
63
+ };
64
+ exports.scgcSaveimage = scgcSaveimage;
65
+ /**
66
+ * @description 配置app分享
67
+ * @param {IShareData} data
68
+ * @param {string} data.shareUrl 需要分享的地址
69
+ * @param {string} data.shareImg 分享的封面
70
+ * @param {string} data.shareTitle 分享的标题
71
+ * @param {string} data.shareDesc 分享的说明
72
+ * @param {boolean} data.doShare 是否在调用bridge时立即触发app的分享,默认为仅修改配置
73
+ */
74
+ var scgcShare = function (data) {
75
+ commonBridge("share", data);
76
+ };
77
+ exports.scgcShare = scgcShare;
78
+ /**
79
+ * @description 打开一个webview
80
+ * @param {ItoH5Data} data
81
+ * @param {string} data.path 需要打开的url
82
+ */
83
+ var scgcToH5 = function (data) {
84
+ commonBridge("toH5", data);
85
+ };
86
+ exports.scgcToH5 = scgcToH5;
87
+ /**
88
+ * @description 打开app原生新闻页
89
+ * @param {IToDetailData} data
90
+ * @param {string} data.path 新闻json地址 --相对地址,没有域名前缀的形式
91
+ * @param {number} data.newsType 新闻类型 --1.图文 2.音频 3.视频 4.纯视频新闻 6 外链
92
+ */
93
+ var scgcToDetail = function (data) {
94
+ commonBridge("toDetail", data);
95
+ };
96
+ exports.scgcToDetail = scgcToDetail;
97
+ /**
98
+ * @description 打开app原生专题详情页
99
+ * @param {IToSpecialData} data
100
+ * @param {string} data.id 专题id
101
+ */
102
+ var scgcToSpecial = function (data) {
103
+ commonBridge("toSpecial", data);
104
+ };
105
+ exports.scgcToSpecial = scgcToSpecial;
106
+ /**
107
+ * @description 打开app原生直播页
108
+ * @param {IToLiveData} data
109
+ * @param {string} data.id 直播id
110
+ * @param {string} data.type 直播样式 1 横版 2 竖版
111
+ */
112
+ var scgcToLive = function (data) {
113
+ commonBridge("toLive", data);
114
+ };
115
+ exports.scgcToLive = scgcToLive;
116
+ /**
117
+ * @description 打开app话题页
118
+ * @param {IToTopicData} data
119
+ * @param {string} data.name 话题名称
120
+ * @param {string} data.cover 话题封面图(完整的图片地址)
121
+ * @param {string} data.id 话题id
122
+ */
123
+ var scgcToTopic = function (data) {
124
+ commonBridge("toTopic", data);
125
+ };
126
+ exports.scgcToTopic = scgcToTopic;
127
+ /**
128
+ * @description 设置app音量
129
+ * @param {ISetVolumeData} data
130
+ * @param {number} data.type 0 调小 1 调大
131
+ */
132
+ var scgcSetVolume = function (data) {
133
+ commonBridge("setVolume", data);
134
+ };
135
+ exports.scgcSetVolume = scgcSetVolume;
136
+ /**
137
+ * @description 打开app原生专题新闻列表页
138
+ * @param {IToSubSpecialData} data
139
+ * @param {string} data.title 专题标题
140
+ * @param {string} data.id 专题id
141
+ */
142
+ var scgcToSubSpecial = function (data) {
143
+ commonBridge("toSubSpecial", data);
144
+ };
145
+ exports.scgcToSubSpecial = scgcToSubSpecial;
146
+ /**
147
+ * @description 打开积分商城商品详情
148
+ * @param {IMallDetailData} data
149
+ * @param {string} data.json 商品详情json地址
150
+ * @param {string} data.url 商品详情网页地址
151
+ * @param {string} data.ptype todo 未知
152
+ * @param {number} data.isDark 0 普通模式 1 黑暗模式
153
+ */
154
+ var scgcToMallDetail = function (data) {
155
+ commonBridge("detailJson", data);
156
+ };
157
+ exports.scgcToMallDetail = scgcToMallDetail;
158
+ /**
159
+ * @description 是否禁用app左右滑动(主要用户嵌入在app首页的swiper,避免滑动swiper的情况下,会滑动app首页的tab页)
160
+ * @param {IMallDetailData} data
161
+ * @param {boolean} data.focus 是否禁止app滑动
162
+ *
163
+ */
164
+ var scgcFocusWeb = function (data) {
165
+ commonBridge("focusWeb", data);
166
+ };
167
+ exports.scgcFocusWeb = scgcFocusWeb;
168
+ /**
169
+ * @description 跳转至积分商城
170
+ */
171
+ var scgcToMall = function () {
172
+ commonBridge("mall");
173
+ };
174
+ exports.scgcToMall = scgcToMall;
175
+ /**
176
+ * @description 跳转至快拍
177
+ */
178
+ var scgcToKuaipai = function () {
179
+ commonBridge("release");
180
+ };
181
+ exports.scgcToKuaipai = scgcToKuaipai;
182
+ /**
183
+ * @description 跳转至app首页
184
+ */
185
+ var scgcToAppHome = function () {
186
+ commonBridge("mainPage");
187
+ };
188
+ exports.scgcToAppHome = scgcToAppHome;
189
+ /**
190
+ * @description 设置app顶部时间栏颜色
191
+ * @param {IChangeStateBarColorData} data
192
+ * @param {number} data.type 1 黑色 2 白色
193
+ *
194
+ */
195
+ var scgcChangeStateBarColor = function (data) {
196
+ commonBridge("changeStatebarColor", data);
197
+ };
198
+ exports.scgcChangeStateBarColor = scgcChangeStateBarColor;
199
+ /**
200
+ * @description 获取app 用户id
201
+ * @return {Promise((success:boolean,data:string))} 返回promise
202
+ *
203
+ */
204
+ var scgcGetUserId = function () {
205
+ return commonBridge("getUserId");
206
+ };
207
+ exports.scgcGetUserId = scgcGetUserId;
208
+ /**
209
+ * @description 获取app 用户头像
210
+ * @return {Promise((success:boolean,data:string))} 返回promise
211
+ *
212
+ */
213
+ var scgcGetAvatar = function () {
214
+ return commonBridge("getAvatar");
215
+ };
216
+ exports.scgcGetAvatar = scgcGetAvatar;
217
+ /**
218
+ * @description 获取app 用户昵称
219
+ * @return {Promise((success:boolean,data:string))} 返回promise
220
+ *
221
+ */
222
+ var scgcGetNickName = function () {
223
+ return commonBridge("getNickName");
224
+ };
225
+ exports.scgcGetNickName = scgcGetNickName;
226
+ // /**
227
+ // * @description 获取app 用户手机号
228
+ // * @return {Promise((success:boolean,data:string))} 返回promise
229
+ // *
230
+ // */
231
+ var scgcGetPhoneNumber = function () {
232
+ return commonBridge("getPhoneNumber");
233
+ };
234
+ exports.scgcGetPhoneNumber = scgcGetPhoneNumber;
235
+ // /**
236
+ // * @description 获取app token --暂不可用
237
+ // * @return {Promise((success:boolean,data:string))} 返回promise,暂时不会有进catch的情况
238
+ // *
239
+ // */
240
+ // export const scgcGetToken = () => {
241
+ // return commonBridge("getToken");
242
+ // };
243
+ var utils_2 = require("./utils");
244
+ Object.defineProperty(exports, "setDevMode", { enumerable: true, get: function () { return utils_2.setDevMode; } });
245
+ Object.defineProperty(exports, "isScgcApp", { enumerable: true, get: function () { return utils_2.isScgcApp; } });
@@ -0,0 +1,17 @@
1
+ export interface ICommonResult<T> {
2
+ success: boolean;
3
+ data: T;
4
+ }
5
+ type TSyncFuns = "getSlideData" | "login" | "scan" | "close" | "openexplorer" | "openwechat" | "saveimage" | "share" | "toH5" | "toDetail" | "toLive" | "toTopic" | "setVolume" | "toSubSpecial" | "detailJson" | "focusWeb" | "mall" | "mainPage" | "changeStatebarColor" | "release" | "toSpecial";
6
+ type TAsyncFuns = "getToken" | "getUserId" | "getNickName" | "getAvatar" | "getPhoneNumber" | "getPromise";
7
+ export declare const setDevMode: () => void;
8
+ export declare const initAsyncCallbackPool: () => void;
9
+ declare function androidBridgeFn(fnName: TSyncFuns, data?: Record<string, any>): void;
10
+ declare function androidBridgeFn(fnName: TAsyncFuns, data?: Record<string, any>): Promise<any>;
11
+ export declare const commonBridgeFun: () => typeof androidBridgeFn;
12
+ /**
13
+ * @description 是否为app环境
14
+ * @return {boolean} true 是 false 否
15
+ */
16
+ export declare const isScgcApp: () => boolean;
17
+ export {};