-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathindex.js
381 lines (358 loc) · 12.9 KB
/
index.js
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
import {
NativeModules,
Platform,
DeviceEventEmitter
} from 'react-native';
const JShareModule = NativeModules.JShareModule;
export default class JShare {
/**
* iOS Only
*/
static setup() {
if (arguments[0] !== undefined) {
console.warn('当前版本已经不需要在 setup 方法中传入参数。请复制 RCTJShareConfig.plist 文件到 XCode 工程中进行相关参数配置,详情请参考 iOS 配置文档。')
} else {
}
JShareModule.setup();
}
/**
* 获取SDK所有能用的平台名称,如要使用某个平台,必须在JGShareSDK.xml中配置。
* Android only
* @param {*} callback 返回值 list 是一个数组
*/
static getPlatformList(cb) {
JShareModule.getPlatformList((list) => {
cb(list);
});
}
/**
* 分享
* @param {object} message = {
*
* platformString 必填,用于分享置不同的平台 //可以是 'wechat_session' / 'wechat_timeLine' / 'wechat_favourite' / 'qq' / 'qzone' / 'sina_weibo' / 'sina_weibo_contact' / 'facebook' /'facebook_messenger' /'twitter' /'jchat_pro'
* type 必填
*
* {
* type: 'text'
* platform: platformString // 分享到指定平台
* text: String
* imagePath: // 选填,本地图片地址,新浪微博(iOS 不支持这个字段)
* appName: // 选填,应用名称,趣聊
* targetPkg: // 选填,点击消息时跳转应用的包名,趣聊
* targetClass: // 选填,点击消息时跳转应用的类名,趣聊
* extra: // 选填,点击消息跳转到第三方应用时带的extra信息,趣聊
* url: // 选填,点击消息时跳转应用的url,趣聊
* callBackUrl: // 选填,点击消息跳转第三方应用失败时,回调的url,趣聊
* }
*
* {
* type: 'image'
* platform: platformString // 分享到指定平台
* imagePath: String // 本地图片路径 imagePath, imageUrl imageArray 必须三选一
* text: String // 选填
* imageUrl: String // 网络图片地址,必须以 http 或 https 开头,imagePath, imageUrl imageArray 必须三选一
* imageArray: [String] // (选填: 分享到 Qzone 才提供这个字段) 如果需要分享多张图片需要这个参数,数组中问题图片路径 imagePath, imageUrl imageArray 必须三选一
* appName: // 选填,应用名称,趣聊
* targetPkg: // 选填,点击消息时跳转应用的包名,趣聊
* targetClass: // 选填,点击消息时跳转应用的类名,趣聊
* extra: // 选填,点击消息跳转到第三方应用时带的extra信息,趣聊
* url: // 选填,点击消息时跳转应用的url,趣聊
* callBackUrl: // 选填,点击消息跳转第三方应用失败时,回调的url,趣聊
* }
*
* {
* type: 'image_text'
* platform: platformString // 分享到指定平台,目前只支持趣聊
* appName: String // 选填,应用名称,趣聊
* title: String // 选填,消息标题,趣聊
* text: String // 消息内容,趣聊
* imageUrl: String // 选填,缩略图网络图片地址,趣聊
* targetPkg: String // 选填,点击消息时跳转应用的包名,趣聊
* targetClass: String // 选填,点击消息时跳转应用的类名,趣聊
* extra: String // 选填,点击消息跳转到第三方应用时带的extra信息,趣聊
* url: String // 选填,点击消息时跳转应用的url,趣聊
* callBackUrl: String // 选填,点击消息跳转第三方应用失败时,回调的url,趣聊
* }
*
* {
* type: 'video'
* platform: platformString // 分享到指定平台
* title: String // 选填
* url: String // 视频跳转页面 url
* text: String // 选填
* imagePath: String // 选填,缩略图,本地图片路径
* videoAssetURL: string // videoAssetURL:系统相册视频文件的 url(videoAssetURL 正确格式: assets-library://asset/asset.MOV?id=872C1D2F-97FD-4B0B-9C21-A619E4F23293&ext=MOV) (iOS only),facebook 只支持使用 videoAssetURL 来发送本地视频(不支持 url)。
* videoUrl: String // QQ 空间本地视频 (iOS 不支持这个字段)
* }
*
* {
* type: 'audio'
* platform: platformString // 分享到指定平台
* musicUrl: String //必填 点击直接播放的 urlurl
* url: String //选填,点击跳转的 url
* imagePath: String //选填,缩略图,本地图片路径,imagePath,imageUrl 必须二选一
* imageUrl: String // 选填,网络图片路径,imagePath, imageUrl 必须二选一
* title: String // 选填
* text: String // 选填
* }
*
* {
* type: 'file'
* platform: platformString // 分享到指定平台
* path: String // 必填,文件路径
* fileExt: String // 必填,文件类型后缀
* tile: String
* }
*
* {
* type: 'emoticon'
* platform: platformString // 分享到指定平台
* imagePath: String // 必填,本地图片路径
* }
*
* {
* type: 'app' // wechat_favourite 不支持
* platform: platformString // 分享到指定平台
* url: String // 点击跳转 url
* extInfo: String // 选填 第三方应用自定义数据
* path: String // 选填 对应 app 数据文件
* title: String // 选填
* text: String // 选填
* }
*
* {
* type: 'link'
* platform: platformString // 分享到指定平台
* url: String // 必填,网页 url
* imagePath: String // 选填,本地图片路径 imagePath,imageUrl 必须二选一
* imageUrl: String // 选填,网络图片地址 imagePath imageUrl 必须二选一
* title: String // 选填
* text: String // 选填
* }
*
* {
* type: 'undefined'
* platform: platformString // 分享到指定平台
* }
*
* @param {Function} success = function (state) {} ##
* state = {state: String} state = 'success' / 'fail' / 'cancel' / 'unknow'
*
* @param {Function} fail = function (error) {} ##
* error = {code: number, descript: String}
*/
static share(message, success, fail) {
JShareModule.share(message, (map) => {
success(map);
}, (map) => {
fail(map);
});
}
/**
* 获取社交平台用户信息
* @param {Object} param = {
* platform: String //可以是 'wechat_session' / 'wechat_timeLine' / 'wechat_favourite' / 'qq' / 'qzone' / 'sina_weibo' / 'sina_weibo_contact' / 'facebook' / 'twitter' / 'jchat_pro'
* }
* @param {Function} success function (userInfo) {}
* userInfo = {
* name: String
* iconUrl: String // 社交平台头像链接
* gender: String // 'female' / 'male'
* response: String // 社交平台上的原始数据,为 json 格式字符串。
* }
*
* @param {Function} fail = function (error) {} ##
* error = {code: number, descript: String}
*/
static getSocialUserInfo(param, success, fail) {
JShareModule.getSocialUserInfo(param, (map) => {
success(map);
}, (error) => {
fail(error);
});
}
/**
* 判断某平台是否已经授权
*
* @param {Object} param = {
* platform: String //可以是 'wechat_session' / 'qq' / 'sina_weibo' / 'facebook' /'facebook_messenger' / 'twitter' / 'jchat_pro'
* }
* @param {Function} callback = (Boolean) => {}
*/
static isPlatformAuth(param, cb) {
JShareModule.isPlatformAuth(param, (result) => {
cb(result);
});
}
/**
* Android Only
* 判断平台是否支持授权
* @param {Object} param = {
* platform: String //可以是 'wechat_session' / 'wechat_timeLine' / 'wechat_favourite' / 'qq' / 'qzone' / 'sina_weibo' / 'sina_weibo_contact' / 'facebook' / 'facebook_messenger' / 'twitter' / 'jchat_pro'
* }
* @param {Function} cb = (boolean) => {}
*/
static isSupportAuthorize(param, cb) {
JShareModule.isSupportAuthorize(param, (result) => {
cb(result);
})
}
/**
* 判断该平台的分享是否有效
* Android only
* @param {Object} param = {
* platform: String //可以是 'wechat_session' / 'wechat_timeLine' / 'wechat_favourite' / 'qq' / 'qzone' / 'sina_weibo' / 'sina_weibo_contact' / 'facebook' / 'facebook_messenger' / 'twitter' / 'jchat_pro'
* }
* @param {Function} callback = (Boolean) => {}
*/
static isClientValid(param, cb) {
JShareModule.isClientValid(param, (result) => {
cb(result);
})
}
/**
* 授权接口
* @param {Object} param = {
* platform: String //可以是 'wechat' / 'qq' / 'weibo' / 'facebook' / 'twitter' / 'jchat_pro'
* }
* @param {Function} success = {
* token: string,
* expiration: number,
* refreshToken: string,
* openId: string,
* originData: string // 授权登录返回的原始数据,为 json 格式字符串。
* }
* @param {Function} fail = {
* code: number,
* description: string,
* platform: string
* }
*/
static authorize(param, success, fail) {
JShareModule.authorize(param, (map) => {
success(map);
}, (errorCode) => {
fail(errorCode);
});
}
/**
* 删除用户授权本地数据
*
* @param {Object} param = {
* platform: String //可以是 'wechat_session' /
* 'wechat_timeLine' /
* 'wechat_favourite' /
* 'qq' /
* 'qzone' /
* 'sina_weibo' /
* 'sina_weibo_contact'
* 'twitter'/
* 'jchat_pro'/
* }
* @param {Function} callback = (Int) => {}
* @code 返回码,0 表示成功删除
*/
static cancelAuthWithPlatform(param, cb) {
JShareModule.cancelAuthWithPlatform(param, (code) => {
cb(code);
});
}
/**
* 检查不存在新浪客户端情况下的网页端是否登陆
*
* iOS Only
* @param {Function} success = (Boolean) => {}
*/
static isSinaWeiboWebLogined(success) {
JShareModule.isSinaWeiboWebLogined(success)
}
/**
* 登出新浪网页端最新帐号
*
* iOS Only
* @param {Function} success = (Boolean) => {}
*/
static sinaWeiboWebLogOut(success) {
JShareModule.sinaWeiboWebLogOut(success)
}
/**
* 检查是否安装微信客户端
*
* @param {Function} success = (Boolean) => {}
*/
static isWeChatInstalled(success) {
if (Platform.OS === 'android') {
JShareModule.isClientValid({ platform: "wechat_session"},success)
} else {
JShareModule.isWeChatInstalled(success)
}
}
/**
* 检查是否存在 QQ 客户端
*
* @param {Function} success = (Boolean) => {}
*/
static isQQInstalled(success) {
if (Platform.OS === 'android') {
JShareModule.isClientValid({ platform: "qq"},success)
} else {
JShareModule.isQQInstalled(success)
}
}
/**
* 检查是否存在 Facebook 客户端
*
* @param {Function} success = (Boolean) => {}
*/
static isFacebookInstalled(success) {
if (Platform.OS === 'android') {
JShareModule.isClientValid({ platform: "facebook"},success)
} else {
JShareModule.isFacebookInstalled(success)
}
}
/**
* 检查是否存在新浪微博客户端
*
* @param {Function} success = (Boolean) => {}
*/
static isSinaWeiBoInstalled(success) {
if (Platform.OS === 'android') {
JShareModule.isClientValid({ platform: "sina_weibo"},success)
} else {
JShareModule.isSinaWeiBoInstalled(success)
}
}
/**
* 检查是否存在twitter客户端
*
* @param {Function} success = (Boolean) => {}
*/
static isTwitterInstalled(success) {
if (Platform.OS === 'android') {
JShareModule.isClientValid({ platform: "twitter" }, success);
} else {
JShareModule.isTwitterInstalled(success)
}
}
/**
* 检查是否存在趣聊客户端
*
* @param {Function} success = (Boolean) => {}
*/
static isJchatProInstalled(success) {
if (Platform.OS === 'android') {
JShareModule.isClientValid({ platform: "jchat_pro" }, success);
} else {
}
}
/**
*
* @param {Object} param = {
* enable: Boolean
* }
*/
static setDebug(param) {
JShareModule.setDebug(param)
}
}