Android 怎么获取 umeng 的 渠道信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 怎么获取 umeng 的 渠道信息相关的知识,希望对你有一定的参考价值。

Andriod版本APP获取umeng的渠道信息,可以让技术人员在程序中嵌入渠道编码,具体步骤如下:

    进入友盟网站,注册帐号,绑定友盟应用统计;

    下载友盟SDK文件,由技术开发人员嵌入到APP程序代码中,具体操作方法可以参考友盟网站的嵌入指南;

    根据安卓版本不同的发布渠道,定义好channel ID;

    修改代码中与channel相关的代码,比如将<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/> 中的Channel ID替换为您应用的推广渠道名称,channel id自定义。

    对应每个渠道生成一一对应的APK安装包;

    将标记好Channel ID的渠道安装包,在对应的渠道发布;

    定时登录友盟后台查看渠道数据。

参考技术A <span style="font-size:18px;">/**
* 获取渠道名
* @param ctx 此处习惯性的设置为activity,实际上context就可以
* @return 如果没有获取成功,那么返回值为空
*/
public static String getChannelName(Activity ctx)
if (ctx == null)
return null;

String channelName = null;
try
PackageManager packageManager = ctx.getPackageManager();
if (packageManager != null)
//注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null)
if (applicationInfo.metaData != null)
channelName = applicationInfo.metaData.getString("");




catch (PackageManager.NameNotFoundException e)
e.printStackTrace();

return channelName;
</span>

抽取之后:

<span style="font-size:18px;"> /**
* 获取application中指定的meta-data
* @return 如果没有获取成功(没有对应值,或者异常),则返回值为空
*/
public static String getAppMetaData(Context ctx, String key)
if (ctx == null || TextUtils.isEmpty(key))
return null;

String resultData = null;
try
PackageManager packageManager = ctx.getPackageManager();
if (packageManager != null)
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null)
if (applicationInfo.metaData != null)
resultData = applicationInfo.metaData.getString(key);




catch (PackageManager.NameNotFoundException e)
e.printStackTrace();


return resultData;
</span>本回答被提问者采纳

[Android Studio 权威教程]多渠道打包和一键完成(全部产品)打包并签名

好久没有更新blog了,今天给大家带来的是AS 的多渠道打包,并且我们还要验证是否实现了多渠道打包的功能,最后在让大家爽一下实现一键打包所有的渠道包并且给apk签名


多渠道打包

方法1

第一步:添加渠道表示标签

<!-- UMeng 配置-->
<meta-data android:value="$UMENG_CHANNEL_VALUE" android:name="UMENG_CHANNEL"/>
  • 完整截图

第二步:添加渠道

productFlavors 
       xiaomi 
       qihu360 
       baidu 
       wandoujia 
   


   productFlavors.all 
       flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
   
  • 完整的截图

添加完之后我们在点击一下Gradle 的构建按钮重新构建一下

第三步:测试

我们通过java代码获取到meta标签中的value来测试是否成功实现了多渠道打包:

public class MainActivity extends AppCompatActivity 

    TextView tv_channel;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_channel= (TextView) findViewById(R.id.main_tv_channel);
        tv_channel.setText(getApplicationMetaValue("UMENG_CHANNEL"));
    

    private String  getApplicationMetaValue(String name) 
        String value= "";
        try 
            ApplicationInfo appInfo =getPackageManager()
                    .getApplicationInfo(getPackageName(),
                            PackageManager.GET_META_DATA);
            value = appInfo.metaData.getString(name);
         catch (PackageManager.NameNotFoundException e) 
            e.printStackTrace();
        
        return value;
    
  • 完整截图

测试代码添加完毕之后,我们现在点击AS右侧的Gradle,我们此时就可以看到我们刚才添加的xiaomi、qihu360、baidu、wandoujia都出现了,如下图

此时我们双击[installBaiduDebug],然后就可以看到如下结果:

这说明你没有链接手机,链接上手机继续重新双击一下,结果如下

这就说明你成功的安装到你的手机上了,此时不会自动给你打开app,需要手动打开,效果如下:

然后我们在双击[installXiaomiDebug],然后看看

效果

到这里我们来做一个小结,这里我们在ManiFest中添加了meta标签、在gradle(app)中添加了渠道产品对应的渠道名称 ,最后我们测试多渠道打包,这里还最重要的一点就是我这里没有让大家去运行什么命令,全部是让大家点击来实现的,其实点击就是在运行命令:./gradew installXiaomiDebug 效果如下:


一键完成打包(全部产品)并签名

正如标题所示,我们如果要打包所有的产品,肯定不能像刚才一样一个一个来打,那么现在来使用另外一个按钮(命令)assemble

然后切换项目到Project视图,找到app>build>outputs>apk,结果如下我们看到所有版本的apk都有了,有debug版的,debug没有签名的,release没有签名的。

如果我们现在只想打包所有的release版本怎么办呢?看下面的图,如果想打release版就双击[assembleRelease] ,如果想打所有的debug版本就双击[assembleDebug]

  • 小测试(我现在把apk目录下的所有apk都删除掉,然后只打所有release版本),效果如下:

  • 问题(所有的apk生成了,但是没有签名是发布不了的,肿莫办?)

点击项目架构按钮,如下:

然后点击app>Signing>+,然后填写上签名信息,最后点击OK

我们做的上述操作其实就是在gradle文件中添加如下信息,不信你打开你的gradle看看:

signingConfigs 
        release 
            keyAlias '测试程序'
            keyPassword '证书密码'
            storeFile file('/Users/zsl/Downloads/android/appkey/test.keystore')
            storePassword '签名密码'
        
    
  • 完整截图

此时我们把apk下面的apk文件删掉,然后双击[assembleRelease],结果发现还是没有签名啊

这是因为我们只是配置了签名信息,但是我们没有给产品(apk)指定,我们只需要在Gradle文件中添加如下的代码就 ok了,我们来试试看看

//指定签名为release
signingConfig signingConfigs.release
  • 完整截图

我们现在删掉apk文件夹下所有的apk,然后选择[assembleRelease]然后点击run按钮,如下图,这里的run会记录我们最近使用的run脚本名称,

现在我们来看看apk目录下的安装包是否签名:

总结

开始我们在manifast文件中添加了meta渠道标签,然后修改了gradle的文件添加了不同的渠道产品,最后我们在代码中读取了meta标签的value并且显示在一个textview上,我们做了测试。
接下来我们又添加了签名配置,最后我们指定了给release版本的签名,签名的名称是release,最后我们终于搞定了一键多渠道打包签名,下一篇给大家分享AS生成jks签名证书,并且apk签名。


有兴趣的童鞋可以关注我的Blog,我的专栏会持续更新Android Studio 权威教程,以及2015 I/O大会上的NDK的配置和编译,我也全部会分享给大家。
并且我收到了CSND 的讲师邀请,后期我会把这些Android Studio的使用教程录制成视频。


/**
 * --------------
 * 欢迎转载   |  转载请注明
 * --------------
 * 如果对你有帮助,请点击|顶|
 * --------------
 * 请保持谦逊 | 你会走的更远
 * --------------
 * @author zsl
 * @github https://github.com/yy1300326388
 * @blog http://blog.csdn.net/yy1300326388
 */

以上是关于Android 怎么获取 umeng 的 渠道信息的主要内容,如果未能解决你的问题,请参考以下文章

android 多渠道打包

android——利用gradle实现多渠道打包并自定义包名(umeng多渠道)

android studio怎么运行apk包

Android 多渠道打包

Android Studio多渠道打包

android studio多渠道打包