react-native 集成友盟第三方登录、分享

注:前提条件已经在友盟官网生成了双平台的APPKey;

1、进入链接1或者链接2,已经可以查看基本的配置方式。

2、进入链接,选中所需模块进行下载

react-native 集成友盟第三方登录、分享_第1张图片
image.png

3、ios平台配置

3-1、首先进入项目的ios目录,进入对应的工程名目录,新建两个文件夹:UMReactBridgeUMComponent

react-native 集成友盟第三方登录、分享_第2张图片
image.png

3-2、打开刚才下载的文件,将ios目录下的common中的framework,拷入UMComponent中。share目录中的最后所有文件,拷入UMComponent中的新建文件夹UMShare

react-native 集成友盟第三方登录、分享_第3张图片
image.png

react-native 集成友盟第三方登录、分享_第4张图片
image.png

react-native 集成友盟第三方登录、分享_第5张图片
image.png

3-3、进入下载文件的ReactNative目录,找到common share目录中对应的ios平台中的桥接.h .m文件,全部拷贝至我们项目刚刚新建的UMReactBridge文件夹

react-native 集成友盟第三方登录、分享_第6张图片
image.png

3-4、xcode中打开工程目录,右键黄色项目名Add Files to "xxx"options 中选中Create groups Copy items if needed找到我们新建的UMReactBridgeUMComponent,add添加

报错: Native module cannot be null.
Module AppRegistry is not a registered callable module


react-native 集成友盟第三方登录、分享_第7张图片
image.png

react-native 集成友盟第三方登录、分享_第8张图片
image.png

3-5、在Other Linker Flags加入-ObjC ,注意不要写为-Objc,注:-ObjC属于链接库必备参数,如果不加此项,会导致库文件无法被正确链接,SDK无法正常运行

react-native 集成友盟第三方登录、分享_第9张图片
image

3-6、Linked Frameworks and Libraries加入系统依赖库:可参照链接

libsqlite3.tbd
CoreGraphics.framework
SystemConfiguration.framework
CoreTelephony.framework
libc++.tbd
libz.tbd

3-7、配置SSO白名单,右键info.plist选择source code打开(plist具体设置在Build Setting -> Packaging -> Info.plist File可获取plist路径)请根据选择的平台对以下配置进行裁剪:


LSApplicationQueriesSchemes

    
    wechat
    weixin

    
    sinaweibohd
    sinaweibo
    sinaweibosso
    weibosdk
    weibosdk2.5

    
    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

    
    alipay
    alipayshare

    
      dingtalk
      dingtalk-open

    
    linkedin
    linkedin-sdk2
    linkedin-sdk

    
    laiwangsso

    
    yixin
    yixinopenapi

    
    instagram

    
    whatsapp

    
    line

    
    fbapi
    fb-messenger-api
    fbauth2
    fbshareextension

      
     
        
    kakaofa63a0b2356e923f3edd6512d531f546
    kakaokompassauth
    storykompassauth
    kakaolink
    kakaotalk-4.5.0
    kakaostory-2.9.0

     
    pinterestsdk.v1

     
    tumblr

   
    evernote
    en
    enx
    evernotecid
    evernotemsg

   
    youdaonote
    ynotedictfav
    com.youdao.note.todayViewNote
    ynotesharesdk

   
    gplus

   
    pocket
    readitlater
    pocket-oauth-v1
    fb131450656879143
    en-readitlater-5776
    com.ideashower.ReadItLaterPro3
    com.ideashower.ReadItLaterPro
    com.ideashower.ReadItLaterProAlpha
    com.ideashower.ReadItLaterProEnterprise

   
    vk
    vk-share
    vkauthorize

   
    twitter
    twitterauth

3-8、配置URL Scheme

URL Scheme是通过系统找到并跳转对应app的一类设置,通过向项目中的info.plist文件中加入URL types可使用第三方平台所注册的appkey信息向系统注册你的app,当跳转到第三方应用授权或分享后,可直接跳转回你的app。

添加URL Types可工程设置面板设置


react-native 集成友盟第三方登录、分享_第10张图片
image

3-9、初始化,AppDelegate.m设置友盟appkey以及各个平台的appkey和secret

#import "RNUMConfigure.h"
#import 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  /**********************************************************************************************************************/
  /* 打开调试日志 */
  [UMConfigure setLogEnabled:YES];

  /* 设置友盟appkey */
  [RNUMConfigure initWithAppkey:@"5asd23323222se0001cc" channel:@"App Store"];

  /*
   * 关闭强制验证https,可允许http图片分享,但需要在info.plist设置安全域名
   */
  [UMSocialGlobal shareInstance].isUsingHttpsWhenShareContent = NO;

  /*
   设置微信的appKey和appSecret
   */
  [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wx179afsafasw23b54ae" appSecret:@"5a4142fsdsfswe9a40e93fc" redirectURL:nil];

  /*
   设置分享到QQ互联的appID
   */

  [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"110233248545"/*设置QQ平台的appID*/  appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];

  /*
   设置新浪的appKey和appSecret
   */
  [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"27239964"  appSecret:@"fac50980a44sdsdsssdsc968ea572887" redirectURL:@"http://sns.whalecloud.com"];
  /**********************************************************************************************************************/
  
  
  return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
  {
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
      // 其他如支付等SDK的回调
    }
    return result;
  }

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
  {
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
      // 其他如支付等SDK的回调
    }
    return result;
  }

3-10、对应的方法在UMShareModule.m中查看

3-11、进入下载目录的ReactNative找到common下的js中的ShareUtil.js,拷贝到我们RN目录下,即可导入使用

react-native 集成友盟第三方登录、分享_第11张图片
image.png

3-12、使用方式,注:android与ios平台回调中的code值不一致,ios成功时code:200,android成功时code:0

import ShareUtil from './ShareUtil';
ShareUtile.auth(0,(code,result,message) =>{
            this.setState({result:message});
            if (code == 0){
                this.setState({result:result.uid});
            }
        });

4、android集成

4-1、android/app目录下新建libs目录,将下载目录的Android中的所有jar包拷贝至libs

react-native 集成友盟第三方登录、分享_第12张图片
image.png

4-2、app下的build.gradle添加

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
}

4-3、将下载文件的ReactNative目录中所有跟android相关的java文件拷贝至目标项目包下,修改对应包名,

react-native 集成友盟第三方登录、分享_第13张图片
image.png

4-4、包名目录下创建wxapi目录,新建WXEntryActivity文件

package 你的包名;

import com.umeng.socialize.weixin.view.WXCallbackActivity;

public class WXEntryActivity extends WXCallbackActivity {

}

4-5、添加回调

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

4-6、初始化配置

public class MainApplication extends Application implements ReactApplication {

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
            return BuildConfig.DEBUG;
        }

        @Override
        protected List getPackages() {
            return Arrays.asList(
                    new MainReactPackage(),
                    new SharePackage()
            );
        }

    @Override
    public void onCreate() {
        super.onCreate();
        SoLoader.init(this, false);
        RNUMConfigure.init(this, "5aeaxxxxxxxxxx175", "Umeng", UMConfigure.DEVICE_TYPE_PHONE,
                "");
    }

    // 配置平台key、secret信息
    {
        PlatformConfig.setWeixin("wxxxxxxx", "5a4142ff9xxxxxxxx93fc");
        PlatformConfig.setQQZone("110xxxxxx59", "3JjbG8aXxxxxsV");
        PlatformConfig.setSinaWeibo("27xxxxxxx964", "fac50980a44e3e3afdxxxa572887", "www.baidu.com");
    }
}

4-5、权限链接




   

4-6、配置activity,android-manifest-xml 链接

 

你可能感兴趣的:(react-native 集成友盟第三方登录、分享)