友盟集成简单的推送

1.开发者中心 (umeng.com)去下载相应的sdk,集成

1. 申请Appkey

开发者中心 (umeng.com)注册获取appkey

2. 接入Push SDK

  1. 在根目录build.gradle中添加maven仓库地址

  2. maven { url 'https://repo1.maven.org/maven2/' }

  3. 在app/build.gradle中添加库依赖

    dependencies { //友盟基础库依赖(必须) api 'com.umeng.umsdk:common:9.4.2' api 'com.umeng.umsdk:asms:1.4.1' //友盟Push依赖 api 'com.umeng.umsdk:push:6.4.0' }

3. 基础接口引入

  1. 在自定义Application类的onCreate()中初始化SDK,

  2. onCreate()中添加代码块

  3. //预初始化 PushHelper.preInit(this); //初始化 initPushSDK();

  4. Application类中

     /**
         * 初始化推送SDK
         */
        private void initPushSDK() {
            /*
             * 若用户已同意隐私政策,直接初始化;
             * 若用户未同意隐私政策,待用户同意后,再通过PushHelper.init(...)方法初始化。
             */
            boolean agreed = MyPreferences.getInstance(this).hasAgreePrivacyAgreement();
            if (!agreed) {
                return;
            }
            boolean isMainProcess = UMUtils.isMainProgress(this);
            if (isMainProcess) {
                //启动优化:建议在子线程中执行初始化
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        PushHelper.init(getApplicationContext());
                    }
                }).start();
            } else {
                //若不是主进程(":channel"结尾的进程),不可在子线程中执行
                PushHelper.init(getApplicationContext());
            }
    
        }

    新类 

    public class PushConstants {
        /**
         * 应用申请的Appkey
         */
    //    public static final String APP_KEY = "应用申请的Appkey";
        public static final String APP_KEY = "6164ee01ac9567566e92b286";
    
        /**
         * 应用申请的UmengMessageSecret
         */
    //    public static final String MESSAGE_SECRET = "应用申请的UmengMessageSecret";
        public static final String MESSAGE_SECRET = "22706247cd7e9799482e31246e26e795";
    
        /**
         * 后台加密消息的密码(仅Demo用,请勿将此密码泄漏)
         */
        public static final String APP_MASTER_SECRET = "6vnajkupxywhpgf60ndh73pbotyd8mfn";
    
        /**
         * 渠道名称,修改为您App的发布渠道名称
         */
        public static final String CHANNEL = "Umeng";
    
    
    }
    
    
    
    import android.content.Context;
    import android.content.SharedPreferences;
    
    /**
     * 数据持久化类
     */
    public class MyPreferences {
    
        private static final String NAME = "app_settings";
        private static final String KEY_PRIVACY_AGREEMENT = "privacy_agreement";
    
        private static volatile MyPreferences instance;
    
        private final SharedPreferences preferences;
    
        private MyPreferences(Context context) {
            preferences = context.getSharedPreferences(NAME, Context.MODE_PRIVATE);
        }
    
        public static MyPreferences getInstance(Context context) {
            if (instance == null) {
                synchronized (MyPreferences.class) {
                    if (instance == null) {
                        instance = new MyPreferences(context);
                    }
                }
            }
            return instance;
        }
    
        /**
         * 设置隐私协议是否同意
         *
         * @param value 是否同意
         */
        public void setAgreePrivacyAgreement(boolean value) {
            preferences.edit().putBoolean(KEY_PRIVACY_AGREEMENT, value).apply();
        }
    
        /**
         * 是否同意了隐私协议
         *
         * @return true 已经同意;false 还没有同意
         */
        public boolean hasAgreePrivacyAgreement() {
            return preferences.getBoolean(KEY_PRIVACY_AGREEMENT, false);
        }
    
    }
    

    5.在UMConfigure.init方法后调用注册接口,注册成功后可获取deviceToken 

    public class PushHelper {
        private static final String TAG = PushHelper.class.getSimpleName();
    
    
        /**
         * 预初始化,已添加子进程中初始化sdk。
         * 使用场景:用户未同意隐私政策协议授权时,延迟初始化
         *
         * @param context 应用上下文
         */
        public static void preInit(Context context) {
    
            try {
                //解决推送消息显示乱码的问题
                AccsClientConfig.Builder builder = new AccsClientConfig.Builder();
                builder.setAppKey("umeng:" + PushConstants.APP_KEY);
                builder.setAppSecret(PushConstants.MESSAGE_SECRET);
                builder.setTag(AccsClientConfig.DEFAULT_CONFIGTAG);
                ACCSClient.init(context, builder.build());
                TaobaoRegister.setAccsConfigTag(context, AccsClientConfig.DEFAULT_CONFIGTAG);
            } catch (Exception e) {
                e.printStackTrace();
            }
            UMConfigure.preInit(context, PushConstants.APP_KEY, PushConstants.CHANNEL);
        }
        /**
         * 初始化。
         * 场景:用户已同意隐私政策协议授权时
         *
         * @param context 应用上下文
         */
        public static void init(Context context) {
            // 在此处调用基础组件包提供的初始化函数 相应信息可在应用管理 -> 应用信息 中找到 http://message.umeng.com/list/apps
            // 参数一:当前上下文context;
            // 参数二:应用申请的Appkey;
            // 参数三:渠道名称;
            // 参数四:设备类型,必须参数,传参数为UMConfigure.DEVICE_TYPE_PHONE则表示手机;传参数为UMConfigure.DEVICE_TYPE_BOX则表示盒子;默认为手机;
            // 参数五:Push推送业务的secret 填充Umeng Message Secret对应信息
    
    
            UMConfigure.init(context, PushConstants.APP_KEY, PushConstants.CHANNEL,
                    UMConfigure.DEVICE_TYPE_PHONE, PushConstants.MESSAGE_SECRET);
    
    
            UMConfigure.init(context, "6164ee01ac9567566e92b286"
                    , "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");//58e
            //获取消息推送实例
            final PushAgent pushAgent = PushAgent.getInstance(context);
    
            //推送消息拦截处理
            pushAdvancedFunction(context);
            Log.i(TAG, "deviceToken --> " );
            //注册推送服务,每次调用register方法都会回调该接口
    
            pushAgent.register(new UPushRegisterCallback() {
    
                @Override
                public void onSuccess(String deviceToken) {
                    //注册成功会返回deviceToken deviceToken是推送消息的唯一标志
                    Log.i(TAG, "deviceToken --> " + deviceToken);
                }
    
                @Override
                public void onFailure(String errCode, String errDesc) {
                    Log.e(TAG, "register failure:--> " + "code:" + errCode + ",desc:" + errDesc);
                }
            });
            registerDeviceChannel(context);
        }
    
        /**
         * 注册设备推送通道(小米、华为等设备的推送)
         *
         * @param context 应用上下文
         */
        private static void registerDeviceChannel(Context context) {
    //        //小米通道,填写您在小米后台APP对应的xiaomi id和key
    //        MiPushRegistar.register(context, PushConstants.MI_ID, PushConstants.MI_KEY);
    //        //华为,注意华为通道的初始化参数在minifest中配置
    //        HuaWeiRegister.register((Application) context.getApplicationContext());
    //        //魅族,填写您在魅族后台APP对应的app id和key
    //        MeizuRegister.register(context, PushConstants.MEI_ZU_ID, PushConstants.MEI_ZU_KEY);
    //        //OPPO,填写您在OPPO后台APP对应的app key和secret
    //        OppoRegister.register(context, PushConstants.OPPO_KEY, PushConstants.OPPO_SECRET);
    //        //vivo,注意vivo通道的初始化参数在minifest中配置
    //        VivoRegister.register(context);
        }
    
        //推送高级功能集成说明
        private static void pushAdvancedFunction(Context context) {
            PushAgent pushAgent = PushAgent.getInstance(context);
    
            //设置通知栏显示通知的最大个数(0~10),0:不限制个数
            pushAgent.setDisplayNotificationNumber(0);
    
            //推送消息处理
            UmengMessageHandler msgHandler = new UmengMessageHandler() {
                //处理通知栏消息
                @Override
                public void dealWithNotificationMessage(Context context, UMessage msg) {
                    super.dealWithNotificationMessage(context, msg);
                    Log.i(TAG, "notification receiver:" + msg.getRaw().toString());
                }
    
                //自定义通知样式
                @Override
                public Notification getNotification(Context context, UMessage uMessage) {
                    return super.getNotification(context, uMessage);
                }
    
                //处理透传消息
                @Override
                public void dealWithCustomMessage(Context context, UMessage msg) {
                    super.dealWithCustomMessage(context, msg);
                    Log.i(TAG, "custom receiver:" + msg.getRaw().toString());
                }
            };
            pushAgent.setMessageHandler(msgHandler);
    
            //推送消息点击处理
            UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
                @Override
                public void openActivity(Context context, UMessage msg) {
                    super.openActivity(context, msg);
                    Log.i(TAG, "click openActivity: " + msg.getRaw().toString());
                }
    
                @Override
                public void launchApp(Context context, UMessage msg) {
                    super.launchApp(context, msg);
                    Log.i(TAG, "click launchApp: " + msg.getRaw().toString());
                }
    
                @Override
                public void dismissNotification(Context context, UMessage msg) {
                    super.dismissNotification(context, msg);
                    Log.i(TAG, "click dismissNotification: " + msg.getRaw().toString());
                }
            };
            pushAgent.setNotificationClickHandler(notificationClickHandler);
        }
    }
    

    • deviceToken是推送平台生成的用于标识设备的id,长度为44位

    • 同一台设备上不同应用对应的deviceToken不一样

    • 获取deviceToken的值后,才可以进行消息推送测试

4. 消息推送测试

恭喜您已经顺利获取deviceToken,可以通过推送消息平台向这台设备推送消息了~

5. 接入完成

此时在您的测试手机上可以验证和处理推送消息了!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp中集成友盟消息,可以按照以下步骤进行操作: 1. 在友盟官网创建应用:首先,在友盟官网上创建一个应用并获取AppKey和AppSecret。确保应用类型选择为“”。 2. 安装插件:使用uniapp的插件市场搜索并安装友盟插件。你可以在`manifest.json`文件中添加以下代码: ```json "uni-app-plus": { "plugins": { "umeng-push": { "version": "1.0.0", "provider": "xxxxxxxx" // 这里填写你的友盟AppKey } } } ``` 3. 配置Android平台:对于Android平台,你需要在`manifest.json`文件中配置一些必要的信息。添加以下代码: ```json "umeng_push": { "appkey": "xxxxxxxx", // 这里填写你的友盟AppKey "channel": "umeng", // 渠道名称,可以自定义 "xiaomi_appid": "", // 小米AppId,可选 "xiaomi_appkey": "" // 小米AppKey,可选 } ``` 4. 配置iOS平台:对于iOS平台,你需要在`Info.plist`文件中添加以下代码: ```xml <key>UmengPushAppkey</key> <string>xxxxxxxx</string> <!-- 这里填写你的友盟AppKey --> <key>UMessage_StartWithAppkeyEnabled</key> <false/> ``` 5. 调用API:在需要使用的页面或组件中,使用uniapp的API进行消息。你可以使用`uni.request`方法向友盟服务器发消息,示例如下: ```javascript uni.request({ url: 'https://msg.umeng.com/api/send', method: 'POST', header: { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + base64(appKey + ':' + appMasterSecret) }, data: { "appkey": "xxxxxxxx", // 这里填写你的友盟AppKey "timestamp": Date.now(), "policy": { "expire_time": "2022-01-01 00:00:00" }, "payload": { "body": { "custom": { "key1": "value1", "key2": "value2" } }, "display_type": "message", "body": { "ticker": "通知栏提示文字", "title": "通知标题", "text": "通知内容", "after_open": "go_app" } } }, success: function(res) { console.log(res.data); } }); ``` 请确保替换示例代码中的`xxxxxxxx`为你自己的友盟AppKey。另外,你还需要根据具体需求调整消息内容、策略等。 以上是集成友盟消息的基本步骤,具体操作还需要根据你的实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值