Android 獲取app的友盟多渠道的標識

寫在前面
因app的業務需求,需要針對不同的渠道,提示不同的app升級彈窗提示,和不用的推送提示。
那麼就需要在和服務器交互之前,獲取我們的渠道標識,再進一步的完成後續的交互。
友情提示
方法一:適用範圍–友盟統計+gradle配置多渠道打包的方式。
方法二:沒有範圍,使用友盟自己的API方法。
方法一
在app中的使用方法,搞成工具類就ok

     /**
     * 獲取渠道名
     * @param context 此處習慣性的設置爲activity,實際上context就可以
     * @return 如果沒有獲取成功,那麼返回值爲空
     */
    public static String getChannelName(Context context) {
        if (context == null) {
            return null;
        }
        String channelName = null;
        try {
            PackageManager packageManager = context.getPackageManager();
            if (packageManager != null) {
                //注意此處爲ApplicationInfo,因爲友盟設置的meta-data是在application標籤中
                ApplicationInfo applicationInfo = packageManager.
                        getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
                if (applicationInfo != null) {
                    if (applicationInfo.metaData != null) {
                            //這裏的UMENG_CHANNEL要與manifest中的配置文件標識一致
                        channelName = String.valueOf(applicationInfo.metaData.get("UMENG_CHANNEL"));
                    }
                }

            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return channelName;
    }

再附上我的manifest文件中,友盟的配置信息,以供參考。

   <meta-data
            <--這裏的UMENG_CHANNEL的標識一定和上面的保持一致-->
            android:name="UMENG_CHANNEL"
            android:value="${channelName}" />

方法二
使用友盟的api中的方法獲取渠道標識,這種方法也是最簡單的。

String channel_name= AnalyticsConfig.getChannel(this);

最後,這兩種方法都可以獲取到渠道標識。對比一、二方法,方法二固然簡單,但是侷限性還是有的;相對而言,方法一,先獲取packageMananger,再去獲取Application中的信息,進而獲取mate-data中的數據,這樣我們能拿到的信息就不僅僅渠道標識了,還可以做更多的事情。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章