react native 动态获取渠道

背景

  1. react-native开发的安卓APP
  2. 打包需要打不同渠道的包
  3. 不同渠道需要上不同的活动,有活动的渠道打包的时候需要调整代码,很是繁杂

解决方案

  1. 再page里面获取渠道名,根据渠道名做判断

首先获取渠道

https://www.npmjs.com/package/react-native-get-channel
在google搜索 react native channel 得到了这个组件,经过使用后发现是获取AndroidManifest.xml一个参数的value

把渠道动态配知道AndroidManifest里面

在上一步中,我发现并没有直接获取渠道(起初我没有读懂文档,以为可以直接获取到,这让我很绝望)
于是我又回到了build.gradle去看渠道是怎么配置的,我发现渠道都是配置在productFlavors里面,我就去搜索productFlavors是干嘛的,然后我就看到了这个帖子https://juejin.im/entry/5a586bfaf265da3e2c3808c5《Gradle中productFlavors使用详解》
我的运气真的爆棚,这个帖子讲了如何把渠道名配置到AndroidManifest里面去,刚好和我前面使用的组件结合起来了。
于是赶紧测试,发现成功的串联起来了。

附上原博部分内容

配置渠道名到AndroidManifest

如果要配置不同的包名,版本号等,可直接在对应的产品定义中指定相应的属性值;如果要配置渠道号可以通过${name}的形式在AndroidManifest.xml中插入一个占位符,编译的时候会替换为真实值。

flavorDimensions "cooperator"
    productFlavors {
        cooperatorA {
            applicationId "com.ckj.myapplication1"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE:"channel1"]
            versionCode 1
            versionName "1.0"
            dimension "cooperator"
        }
        cooperatorB {
            applicationId "com.ckj.myapplication2"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE:"channel2"]
            versionCode 2
            versionName "1.0.1"
            dimension "cooperator"
        }
    }

在AndroidManifest.xml中添加渠道变量

<application
    ...>
    ...
    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="${UMENG_CHANNEL_VALUE}" />
</application>

在page获取渠道名

Add channel information into AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ownmoduletest">
    ...
    <application
      ...
      <meta-data android:name="JPUSH_APPKEY" android:value="12.324"/> // <--- ADD HERE
      ...
    </application>
    ...
</manifest>
import {getAppMetaData} from 'react-native-get-channel';
 _getChannel = ()=> {
    getAppMetaData('JPUSH_APPKEY').then((data)=>{
      alert(data);
    }).catch((error)=>{
      alert('获取失败');
    });
  }

写在最后

本人不是专业的Android所以很多地方不明白,不知道这个是不是在RN项目中的最优解决方案,欢迎讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值