阿里云移动推送服务java调用

阿里云移动推送服务java调用

  1. 首先登录阿里云官网,开通移动推送服务
  2. 创建app和平台
  3. 配置应用
  4. 测试推送
  5. 根据文档编写自己的调用方法
  6. 测试推送

##具体步骤如下:
登录阿里云官网
https://www.aliyun.com/?utm_medium=text&utm_source=bdbrand&utm_campaign=bdbrand&utm_content=se_32492
登录进入控制台,在产品中搜索移动推送
阿里云移动推送服务java调用_第1张图片
选择开通服务,添加产品
阿里云移动推送服务java调用_第2张图片
进入产品里面,添加APP
阿里云移动推送服务java调用_第3张图片
注意:如果是iOS,需要添加APNs推送证书,并验证。
创建完成之后如图所示,后台服务需要appkey,手机端开发需要appkey和appsecret。
阿里云移动推送服务java调用_第4张图片
阿里云提供的文档:
https://help.aliyun.com/knowledge_detail/48089.html?spm=a2c4g.11186631.2.5.4bfc24e1OTRI8j
用文档给的代码,只要修改以下参数就可以,
accessKeyId和accessKeySecret,已经在应用管理中创建的需要发送APP的appkey,通知的标题和内容
代码片.

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

完成之后就可以进行测试了。测试结果OK。

你可能感兴趣的:(java,推送通知-阿里云,java)