java集成友盟实现推送

友盟的文档我是真的有点看不懂,没头没尾的,如果不看sdk真的是理解不了,最终还是给拿下了
友盟官方地址:https://developer.umeng.com/docs
废话不多说直接下载sdk:
在这里插入图片描述
下载之后集成到项目中(应用配置官网上有可以看一下,这个还是能看懂的,配置一下,android和ios在前端和后端都是两套东西,前端所对应的的需要集成的不同,后端的方法和参数不同)
在这里插入图片描述方法集中在红框框这个工具类里边
在这里插入图片描述
推送的一个关键就是友盟的一个deviceToken(后端进行推送的是需要前端传过来deviceToken 随你怎么处理这个玩意,这个token是根据手机和app来的,比如集成后卸载了再下载两个token都是不一样的)
方法的改造性特别强 我这里使用的是一个单播模式所以我只改造了一下两个端的单播方法
如下:

//可以看到不管是那个方法都有正式和测试模式  测试模式只在本地校验你的参数对不对
//正式模式可以在手机上看到推送
public class UmengPushUtil {

    private String appkey = "";
    private String appMasterSecret = "";
    private String timestamp = null;
    private PushClient client = new PushClient();



    public UmengPushUtil(String key, String secret) {
        try {
            appkey = key;
            appMasterSecret = secret;
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }


    /**
     * 推送android 群发消息
     * @throws Exception
     */
    public void sendAndroidBroadcast() throws Exception {
        AndroidBroadcast broadcast = new AndroidBroadcast(appkey,appMasterSecret);
        broadcast.setTicker( "Android broadcast ticker");
        broadcast.setTitle(  "中文的title");
        broadcast.setText(   "Android broadcast text");
        broadcast.goAppAfterOpen();
        broadcast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
        // 设置测试模式还是正式模式
        broadcast.setProductionMode();
        // 设置定制字段
        broadcast.setExtraField("test", "helloworld");
        //厂商通道相关参数
        broadcast.setChannelActivity("your channel activity");
        broadcast.setChannelProperties("abc");
        client.send(broadcast);
    }

    /**
     * Android 单发消息
     * @throws Exception
     */
    public void sendAndroidUnicast(String appkey,String appMasterSecret,String deviceToken,Map<String,String> map) throws Exception {
        AndroidUnicast unicast = new AndroidUnicast(appkey,appMasterSecret);
        unicast.setDeviceToken(deviceToken);
        unicast.setTicker(map.get("ticker"));
        unicast.setTitle( map.get("title"));
        unicast.setText(  map.get("text"));
        unicast.goAppAfterOpen();
        unicast.setDisplayType(AndroidNotification.DisplayType.NOTIFICATION);
        // 设置测试模式还是正式模式
        unicast.setProductionMode();
        // 设置定制字段
        unicast.setExtraField("test", "helloworld");
        unicast.setChannelActivity("your channel activity");
        unicast.setChannelProperties("abc");
        client.send(unicast);
    }


    /**
     * iso 群发消息
     * @throws Exception
     */
    public void sendIOSBroadcast() throws Exception {
        IOSBroadcast broadcast = new IOSBroadcast(appkey,appMasterSecret);
        //alert值设置为字符串
        //broadcast.setAlert("IOS 广播测试");
        //alert的值设置为字典

        broadcast.setAlert("今日天气" , "" , "今日可能下雨🌂");
        broadcast.setBadge( 0);
        broadcast.setSound( "default");
        // 设置测试模式还是
        broadcast.setProductionMode();
        // 设置定制字段
        broadcast.setCustomizedField("test", "helloworld");
        client.send(broadcast);
    }

    /**
     * ISO单播
     * @throws Exception
     */

    public void sendIOSUnicast(String appkey, String appMasterSecret, String deviceToken, Map<String,String> info) throws Exception {
        IOSUnicast unicast = new IOSUnicast(appkey,appMasterSecret);
        // TODO Set your device token
        unicast.setDeviceToken(deviceToken);
        //alert值设置为字符串
        //unicast.setAlert("IOS 单播测试");
        //alert的值设置为字典
        unicast.setAlert(info.get("title"),info.get("subtitle"),info.get("body"));
        unicast.setBadge( 0);
        unicast.setSound( "default");
        // 设置测试模式还是正式模式
        unicast.setProductionMode();
        unicast.setCustomizedField("display_type","notification");
        // 设置定制字段
       // unicast.setCustomizedField("test", "helloworld");
        client.send(unicast);
    }


}

集成推送

//此处我把上边的appkey和MasterSecret 存放在nacos中 直接再类里配置也行一个样子
		@Value("${umeng.iosAppkey}")
    private String iosAppkey ;
    @Value("${umeng.iosAppMasterSecret}")
    private String iosAppMasterSecret ;
    @Value("${umeng.androidAppkey}")
    private String androidAppkey;
    @Value("${umeng.androidAppMasterSecret}")
    private String androidAppMasterSecret ;



			 @Override
        public void run() {
            // 定义任务要做的事,完成任务逻辑
            UmengPushUtil androidUmengPushUtil = new UmengPushUtil(androidAppkey,androidAppMasterSecret);
            UmengPushUtil iosUmengPushUtil = new UmengPushUtil(iosAppkey,iosAppMasterSecret);
           	//通过任何方式给手机类型取出来
            Integer phoneType = XXXXXX.getPhoneType();
            //还有最新的devicesToken
            String devicesToken = XXXXX.getDevicesToken();
					//因为ios和andirod 端不同 所以需要区别手机的类型
            if (phoneType==0){//ios
                Map<String,String> info = new HashMap<>();
                info.put("title","提醒");
                info.put("subtitle","提醒");
                info.put("body","内容");
                try {
                    iosUmengPushUtil.sendIOSUnicast(iosAppkey,iosAppMasterSecret,devicesToken,info);
                    log.info("ios 推送成功");
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }else {//安卓
                Map<String,String> info = new HashMap<>();
                info.put("ticker","提醒");
                info.put("title","醒");
                info.put("text","推送");
                try {
                    androidUmengPushUtil.sendAndroidUnicast(androidAppkey,androidAppMasterSecret,devicesToken,info);
                    log.info("android 推送成功");
                } catch (Exception exception) {
                    exception.printStackTrace();
                }

            }

        }

到这里就完了 可以写一个简单的main方法测试一下测试很容易成功,但是只看文档我是真不想看,有看不懂,另外推送消息不是100%成功的 苹果成功率高一些,安卓各个都有自己的厂商通道,可以查看文档里边的。

文章持续更新有问题可以留言

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在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。另外,你还需要根据具体需求调整消息内容、推送策略等。 以上是集成友盟消息推送的基本步骤,具体操作还需要根据你的实际需求进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值