[TOC]
react-native-umeng-api
友盟的第三方登录 分享集成
安装
react-native link react-native-umeng-api
除此以外还需要额外的配置
切记必须要把第三方平台的资料都提交了。获得id 和 secret 才可以正确调用第三方sdk,否则调用都获取不了正确的信息
Android安装
Step1
在app主体里面MainApplication.java添加
...@Overridepublic void { super.; SoLoader.; // android配置id PlatformConfig.; PlatformConfig.; PlatformConfig.; UMShareAPI.;}
Step2
打开react-native-umeng/android/....xml
把<data android:scheme="qqID"/>
里面的qqID修改成相应的qqID
把<android:name="UMENG_APPKEY" android:value="<$UMENG_APPKEY>">
里面的 <$UMENG_APPKEY> 修改成相应的UMENG_APPKEY
Step3
在项目的android/../../java/com/ProjectName/ 目录下新建文件夹 wxapi
新建WXEntryActivity.java
文件
复制源码
Step4
修改android/../../java/../MainActivity.java
文件
// 导入库 @Overridepublic void { super.; UMShareAPI..;//完成回调 }
Step5
修改android/app/src/main/AndroidManifest.xml
文件
··· <!-- 新增开始 --> <!-- 友盟分享 Activity start --> <!-- 友盟分享 Activity end --> <!-- 新增结束 -->
Step6
修改android/app/build.gradle
...
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
<!-- 新增开始 -->
<!-- 就是把release的配置复制下来 修改成debug, 否则不能使用微信的sdk -->
debug {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
<!-- 新增结束 -->
}
...
IOS安装
Step1
通过U-Share iOS下载页面选择所需的社交平台后进行下载(qq,微信,微博 都选精简版即可),将U-Share SDK拖拽到工程里面(根目录还是 app文件夹里面都可以)。注意: 必须勾选弹框里的Copy items if needed
和Create groups
这2选项,点击Finish确定。此时UMSocial文件夹应该是黄色的,否则将无法读取到SDK里面的文件!
Step2
在Libraries
-> RCTUmengModule.xcodeproj
-> Build Setting
-> Other Linker Flags
-> 加入-ObjC
注意不要写为-Objc。-ObjC属于链接库必备参数,如果不加此项,会导致库文件无法被正确链接,SDK无法正常运行
Step3
在Libraries
-> RCTUmengModule.xcodeproj
-> Build Setting
-> Framework Search Paths
->加入"$(SRCROOT)/../../../ios/UMSocial"
,并将non-recursive
改成 recursive
Step4
在工程target的General
-> Link Frameworks and Libraries
-> 加入libsqlite3.tbd, CoreGraphics.framework
Step5
在项目中的info.plist中加入应用白名单
LSApplicationQueriesSchemes <!-- 微信 URL Scheme 白名单--> wechat weixin <!-- 新浪微博 URL Scheme 白名单--> sinaweibohd sinaweibo sinaweibosso weibosdk weibosdk2.5 <!-- QQ、Qzone、TIM URL Scheme 白名单--> mqqapi mqq mqqOpensdkSSoLogin mqqconnect mqqopensdkdataline mqqopensdkgrouptribeshare mqqopensdkfriend mqqopensdkapi mqqopensdkapiV2 mqqopensdkapiV3 mqqopensdkapiV4 mqzoneopensdk wtloginmqq wtloginmqq2 mqqwpa mqzone mqzonev2 mqzoneshare wtloginqzone mqzonewx mqzoneopensdkapiV2 mqzoneopensdkapi19 mqzoneopensdkapi mqqbrowser mttbrowser tim timapi timopensdkfriend timwpa timgamebindinggroup timapiwallet timOpensdkSSoLogin wtlogintim timopensdkgrouptribeshare timopensdkapiV4 timgamebindinggroup timopensdkdataline wtlogintimV1 timapiV1
Step6
在Info->URL Types 中增加你所需要的第三方平台的scheme:
-
例如使用QQ时
Identifier
设置为qq
, URL Schemes 设置为你注册的QQ开发者账号中的APPID
,需要加前缀tencent,例如tencent1104903684
; -
例如使用QQ空间时
Identifier
设置为Qzone
, URL Schemes 设置为你注册的QQ开发者账号中的APPID
转换成十六进制,需要加前缀QQ,例如QQ41db7e04
; -
例如使用微信时
Identifier
设置为weixin
, URL Schemes 设置为你注册的微信开发者账号中的appkey
,例如wxdc1e388c3822c80b
; -
例如使用微博时
Identifier
设置为weibo
, URL Schemes 设置为你注册的微博开发者账号中的appkey
,需要加前缀wb,例如wb1104903684
;
(注意:appkey等信息需要在第三方平台申请,具体请参考第三方账号申请及绑定,如果还需要其它第三方平台具体配置URL Scheme操作请参考友盟分享文档的1.3.2步骤的图文)
Step7
在你工程的AppDelegate.m文件中添加如下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions // 支持所有iOS系统 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
Method
isWXAppInstalled
检查手机是否安装微信返回promise
,then
只可以返回 true or false
isQQAppInstalled
检查手机是否安装QQ返回promise
,then
只可以返回 true or false
isWBAppInstalled
检查手机是否安装微博返回promise
,then
只可以返回 true or false
WXLogin
微信登录, then返回{ appid: string, isLogin: boolean, errMsg: '', 第三方返回的信息... }
这里的appid只是举例
isLogin是必须的,如果为false的时候errMsg也是必须的
QQLogin
QQ登录, then返回{ appid: string, isLogin: boolean, errMsg: '', 第三方返回的信息... }
这里的appid只是举例
isLogin是必须的,如果为false的时候errMsg也是必须的
WBLogin
微博登录, then返回{ appid: string, isLogin: boolean, errMsg: '', 第三方返回的信息... }
这里的appid只是举例
isLogin是必须的,如果为false的时候errMsg也是必须的
shareWxTimeline
分享到微信朋友圈, 返回promise
,then
可以返回 { isShare: boolean, errMsg: '', 第三方返回的信息... }
isShare是必须的,如果为false的时候errMsg也是必须的
shareWxSession
分享到微信好友, 返回promise
,then
可以返回 { isShare: boolean, errMsg: '', 第三方返回的信息... }
isShare是必须的,如果为false的时候errMsg也是必须的
shareQzone
分享到QQ空间, 返回promise
,then
可以返回 { isShare: boolean, errMsg: '', 第三方返回的信息... }
isShare是必须的,如果为false的时候errMsg也是必须的
shareQQ
分享到QQ好友, 返回promise
,then
可以返回 { isShare: boolean, errMsg: '', 第三方返回的信息... }
isShare是必须的,如果为false的时候errMsg也是必须的
shareWB
分享到微博, 返回promise
,then
可以返回 { isShare: boolean, errMsg: '', 第三方返回的信息... }
isShare是必须的,如果为false的时候errMsg也是必须的
分享格式以及字段说明
// 分享文字
{
type: 'text',
text: 文字内容,
}
// 分享图片
{
type: 'image',
imageUrl: 图片地址,
title : 标题,
description : 描述,
}
// 分享网页
{
type: 'news',
title : 标题,
description : 描述,
webpageUrl : 链接地址,
imageUrl: 缩略图地址,
}