失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java 阿里云消息推送到手机

java 阿里云消息推送到手机

时间:2019-10-08 18:09:36

相关推荐

java 阿里云消息推送到手机

阿里云推送消息到Android:

/*** 阿里云推送(Android)** @param deviceIds 设备号* @param title消息的标题* @param body消息的内容* @param subtitle 通知副标题的内容* @return :*/@Overridepublic void aliAndroidPush(String deviceIds, String title, String body, String subtitle, Long message_id) {AliPushProperties aliPushProperties = artQuarterProperties.getAliPush();IClientProfile profile = DefaultProfile.getProfile("cn-chengdu", aliPushProperties.getAccessKeyId(), aliPushProperties.getAccessKeySecret());DefaultAcsClient client = new DefaultAcsClient(profile);PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(aliPushProperties.getAndroidAccessKeyId());//推送目标: DEVICE:按设备推送 ALIAS : 按别名推送 ACCOUNT:按帐号推送 TAG:按标签推送; ALL: 广播推送pushRequest.setTarget("ACCOUNT");//根据Target来设定,如Target=DEVICE, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)pushRequest.setTargetValue(deviceIds);//推送目标: DEVICE:推送给设备; ACCOUNT:推送给指定帐号,TAG:推送给自定义标签; ALL: 推送给全部// pushRequest.setTarget("ALL");//根据Target来设定,如Target=DEVICE, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)// pushRequest.setTargetValue("ALL");// 消息类型 MESSAGE NOTICEpushRequest.setPushType("NOTICE");// 设备类型 ANDROID iOS ALL.pushRequest.setDeviceType("ANDROID");pushRequest.setAndroidNotificationChannel("1");// 推送配置// 消息的标题pushRequest.setTitle(title);// 消息的内容pushRequest.setBody(body);// 推送配置: Android//通知的提醒方式 "VIBRATE" : 震动 "SOUND" : 声音 "BOTH" : 声音和震动 NONE : 静音pushRequest.setAndroidNotifyType("NONE");//通知栏自定义样式0-100pushRequest.setAndroidNotificationBarType(1);//通知栏自定义样式0-100pushRequest.setAndroidNotificationBarPriority(1);//点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转pushRequest.setAndroidOpenType("NONE");//Android收到推送后打开对应的url,仅当AndroidOpenType="URL"有效// pushRequest.setAndroidOpenUrl("");// 设定通知打开的activity,仅当AndroidOpenType="Activity"有效// pushRequest.setAndroidActivity("com.alibaba.push2.demo.XiaoMiPushActivity");// Android通知音乐// pushRequest.setAndroidMusic("default");//设置该参数后启动辅助弹窗功能, 此处指定通知点击后跳转的Activity(辅助弹窗的前提条件:1. 集成第三方辅助通道;2. StoreOffline参数设为true)// pushRequest.setAndroidPopupActivity("com.ali.demo.PopupActivity");// pushRequest.setAndroidPopupTitle("Title");// pushRequest.setAndroidPopupBody("Body");//设定通知的扩展属性。(注意 : 该参数要以 json或map 的格式传入,否则会解析出错)pushRequest.setAndroidExtParameters("{\"deviceType\":\"android\",\"url\":\"http://192.168.10.100:8095/infor_details.html?message_id="+ message_id+"\"}");// 推送控制// 30秒之间的时间点, 也可以设置成你指定固定时间// Date pushDate = new Date(System.currentTimeMillis()) ;// // 延后推送。可选,如果不设置表示立即推送// String pushTime = ParameterHelper.getISO8601Time(pushDate);// pushRequest.setPushTime(pushTime);// // 12小时后消息失效, 不会再发送// String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000));// pushRequest.setExpireTime(expireTime);// 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到pushRequest.setStoreOffline(true);PushResponse pushResponse = null;try {pushResponse = client.getAcsResponse(pushRequest);System.out.printf("RequestId: %s, MessageID: %s\n", pushResponse.getRequestId(), pushResponse.getMessageId());} catch (ClientException e) {e.printStackTrace();}}

阿里云推送消息到IOS:

/*** 阿里云推送(ios)** @param deviceIds 设备号* @param title消息的标题* @param body消息的内容* @param subtitle 通知副标题的内容* @return :*/@Overridepublic void aliIosPush(String deviceIds, String title, String body, String subtitle, Long message_id) {AliPushProperties aliPushProperties = artQuarterProperties.getAliPush();IClientProfile profile = DefaultProfile.getProfile("cn-chengdu", aliPushProperties.getAccessKeyId(), aliPushProperties.getAccessKeySecret());DefaultAcsClient client = new DefaultAcsClient(profile);PushRequest pushRequest = new PushRequest();// 推送目标pushRequest.setAppKey(aliPushProperties.getIosAccessKeyId());//推送目标: DEVICE:按设备推送 ALIAS : 按别名推送 ACCOUNT:按帐号推送 TAG:按标签推送; ALL: 广播推送,推送给全部pushRequest.setTarget("ACCOUNT");//根据Target来设定,如Target=DEVICE, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)pushRequest.setTargetValue(deviceIds);//推送目标: DEVICE:推送给设备; ACCOUNT:推送给指定帐号,TAG:推送给自定义标签; ALL: 推送给全部// pushRequest.setTarget("ALL");//根据Target来设定,如Target=DEVICE, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)// pushRequest.setTargetValue("ALL");// 消息类型 MESSAGE NOTICEpushRequest.setPushType("NOTICE");// 设备类型 ANDROID iOS ALL.// pushRequest.setDeviceType("ALL");pushRequest.setDeviceType("iOS");// 推送配置// 消息的标题pushRequest.setTitle(title);// 消息的内容pushRequest.setBody(body);// 推送配置: iOS// iOS应用图标右上角角标pushRequest.setIOSBadge(1);// iOS通知声音pushRequest.setIOSMusic("default");//iOS10通知副标题的内容pushRequest.setIOSSubtitle(subtitle);//指定iOS10通知CategorypushRequest.setIOSNotificationCategory("UNNotificationCategoryOptionCustomDismissAction");//是否允许扩展iOS通知内容pushRequest.setIOSMutableContent(true);//iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。"DEV" : 表示开发环境 "PRODUCT" : 表示生产环境pushRequest.setIOSApnsEnv("PRODUCT");// 消息推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。注意:离线消息转通知仅适用于生产环境pushRequest.setIOSRemind(true);//iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效pushRequest.setIOSRemindBody("iOSRemindBody");//通知的扩展属性(注意 : 该参数要以json或map的格式传入,否则会解析出错)pushRequest.setIOSExtParameters("{\"_ENV_\":\"PRODUCT\",\"url\":\"http://192.168.10.100:8095/infor_details.html?message_id="+ message_id+"\"}");// 推送控制// 30秒之间的时间点, 也可以设置成你指定固定时间// Date pushDate = new Date(System.currentTimeMillis()) ;// // 延后推送。可选,如果不设置表示立即推送// String pushTime = ParameterHelper.getISO8601Time(pushDate);// pushRequest.setPushTime(pushTime);// // 12小时后消息失效, 不会再发送// String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000));// pushRequest.setExpireTime(expireTime);// 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到pushRequest.setStoreOffline(true);PushResponse pushResponse = null;try {pushResponse = client.getAcsResponse(pushRequest);System.out.printf("RequestId: %s, MessageID: %s\n", pushResponse.getRequestId(), pushResponse.getMessageId());} catch (ClientException e) {e.printStackTrace();}}

阿里云消息全推(不分IOS和Android):

/*** 阿里云推送** @param deviceIds 设备号* @param title消息的标题* @param body消息的内容* @param subtitle 通知副标题的内容*/@Overridepublic void aliAllPush(String deviceIds, String title, String body, String subtitle, Long message_id) {AliPushProperties aliPushProperties = artQuarterProperties.getAliPush();IClientProfile profile = DefaultProfile.getProfile("cn-chengdu", aliPushProperties.getAccessKeyId(), aliPushProperties.getAccessKeySecret());DefaultAcsClient client = new DefaultAcsClient(profile);PushRequest pushRequest = new PushRequest();//推送目标: DEVICE:按设备推送 ALIAS : 按别名推送 ACCOUNT:按帐号推送 TAG:按标签推送; ALL: 广播推送// pushRequest.setTarget("ALL");//根据Target来设定,如Target=DEVICE, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)// pushRequest.setTargetValue(deviceIds);// pushRequest.setTargetValue("ALL");//推送目标: DEVICE:推送给设备; ACCOUNT:推送给指定帐号,TAG:推送给自定义标签; ALL: 推送给全部pushRequest.setTarget("ALL");//根据Target来设定,如Target=DEVICE, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)pushRequest.setTargetValue("ALL");// 消息类型 MESSAGE NOTICEpushRequest.setPushType("NOTICE");// 设备类型 ANDROID iOS ALL.pushRequest.setDeviceType("ALL");// 推送配置// 消息的标题pushRequest.setTitle(title);// 消息的内容pushRequest.setBody(body);// 推送配置: iOS// iOS应用图标右上角角标pushRequest.setIOSBadge(1);// iOS通知声音pushRequest.setIOSMusic("default");//iOS10通知副标题的内容pushRequest.setIOSSubtitle(subtitle);//指定iOS10通知CategorypushRequest.setIOSNotificationCategory("UNNotificationCategoryOptionCustomDismissAction");//是否允许扩展iOS通知内容pushRequest.setIOSMutableContent(true);//iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。"DEV" : 表示开发环境 "PRODUCT" : 表示生产环境pushRequest.setIOSApnsEnv("PRODUCT");// 消息推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次。注意:离线消息转通知仅适用于生产环境pushRequest.setIOSRemind(true);//iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效pushRequest.setIOSRemindBody("iOSRemindBody");//通知的扩展属性(注意 : 该参数要以json或map的格式传入,否则会解析出错)pushRequest.setIOSExtParameters("{\"_ENV_\":\"PRODUCT\",\"url\":\"http://192.168.10.100:8095/infor_details.html?message_id="+ message_id+"\"}");// 推送配置: Android//通知的提醒方式 "VIBRATE" : 震动 "SOUND" : 声音 "BOTH" : 声音和震动 NONE : 静音pushRequest.setAndroidNotifyType("NONE");//通知栏自定义样式0-100pushRequest.setAndroidNotificationBarType(1);//通知栏自定义样式0-100pushRequest.setAndroidNotificationBarPriority(1);pushRequest.setAndroidNotificationChannel("1");//点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转pushRequest.setAndroidOpenType("NONE");//Android收到推送后打开对应的url,仅当AndroidOpenType="URL"有效// pushRequest.setAndroidOpenUrl("");// 设定通知打开的activity,仅当AndroidOpenType="Activity"有效// pushRequest.setAndroidActivity("com.alibaba.push2.demo.XiaoMiPushActivity");// Android通知音乐// pushRequest.setAndroidMusic("default");//设置该参数后启动辅助弹窗功能, 此处指定通知点击后跳转的Activity(辅助弹窗的前提条件:1. 集成第三方辅助通道;2. StoreOffline参数设为true)// pushRequest.setAndroidPopupActivity("com.ali.demo.PopupActivity");// pushRequest.setAndroidPopupTitle("标题");// pushRequest.setAndroidPopupBody("内容");//设定通知的扩展属性。(注意 : 该参数要以 json map 的格式传入,否则会解析出错)pushRequest.setAndroidExtParameters("{\"deviceType\":\"android\",\"url\":\"http://192.168.10.100:8095/infor_details.html?message_id="+ message_id+"\"}");// 推送控制// 30秒之间的时间点, 也可以设置成你指定固定时间// Date pushDate = new Date(System.currentTimeMillis()) ;// // 延后推送。可选,如果不设置表示立即推送// String pushTime = ParameterHelper.getISO8601Time(pushDate);// pushRequest.setPushTime(pushTime);// // 12小时后消息失效, 不会再发送// String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000));// pushRequest.setExpireTime(expireTime);// 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到pushRequest.setStoreOffline(false);PushResponse pushResponse = null;try {// 推送目标pushRequest.setAppKey(aliPushProperties.getAndroidAppId());pushResponse = client.getAcsResponse(pushRequest);pushRequest.setAppKey(aliPushProperties.getIosAppId());pushResponse = client.getAcsResponse(pushRequest);System.out.printf("RequestId: %s, MessageID: %s\n", pushResponse.getRequestId(), pushResponse.getMessageId());} catch (ClientException e) {e.printStackTrace();}}

pom.xml依赖

<!--阿里云移动推送--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-push</artifactId><version>3.10.1</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>[4.3.2,5.0.0)</version></dependency>

感觉有用的话,请各位点个赞哟,谢谢!

如果觉得《java 阿里云消息推送到手机》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。