极光推送-java

23 篇文章 0 订阅
1 篇文章 0 订阅

直接上代码:

service类:

package com.admin.service;

import java.util.List;

import com.admin.model.JPushChatModel;

public interface JPushApiClient {
	// 极光别名推送通知
	public void jPush(List<String> alias, JPushChatModel jpModel);
	//极光推送设备ID
	public void jPush_rigstId(List<String> rigstId, JPushChatModel jpModel);
}

impl类:

package com.admin.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.admin.model.JPushChatModel;
import com.admin.model.Message;
import com.admin.service.JPushApiClient;
import com.admin.service.MessageServiceI;
import com.web.util.TimeUtils;

import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.AndroidNotification;
import cn.jpush.api.push.model.notification.IosNotification;
import cn.jpush.api.push.model.notification.Notification;

@Service
public class JPushApiClientImpl implements JPushApiClient {
//	private static Logger logger=Logger.getLogger(JPushApiClientImpl.class);
	
	//String jPushAppKey = "76d4f4592bd5909e666ea527";
	//String jPushMasterSecret = "c9acc22b69d867b5913064c4";
	
	//2018-3-14 极光的Key
	String jPushAppKey = "3e4d3836be******892b21e";
	String jPushMasterSecret = "f48ae182a*****2050791e7";
	
	
	@Autowired
	private MessageServiceI messageServiceI;

	@Override
	public void jPush(List<String> alias, JPushChatModel jpModel) {
		Message message=new Message();
		StringBuffer buffer=new StringBuffer();
		try {
			
			if(jpModel!=null){
				if(jpModel.getTitle()!=null){
					buffer.append("|title:"+jpModel.getTitle()+"|,");
				}
				if(jpModel.getContent()!=null){
					buffer.append(",|content:"+jpModel.getContent()+"|");
				}
				if(jpModel.getType()!=null){
					buffer.append(",|type:"+jpModel.getType()+"|");
				}
				if(jpModel.getDataId()!=null){
					buffer.append(",|dataId:"+jpModel.getDataId()+"|");
				}
				buffer.append(",|alias{");
				for(int i=0;i<alias.size();i++){
					if(i==alias.size()-1){
						buffer.append(alias.get(i));
					}else{
						buffer.append(alias.get(i)+",");
					}
				}
				buffer.append("}|");
				
				message.setId(UUID.randomUUID().toString());
				message.setTime(TimeUtils.getTime("yyyy-MM-dd HH:mm:ss"));
				
				
			}
			
			JPushClient jpushClient = new JPushClient(jPushMasterSecret,
					jPushAppKey, 3);
			PushPayload payload = alias_buildPushObject_ios_audienceMore_messageWithExtras(
					alias, jpModel);
			PushResult result = jpushClient.sendPush(payload);
			buffer.append(",|推送成功:"+result+"|");
			message.setMessage(buffer.toString());
			messageServiceI.save(message);
//			logger.debug("推送日志:" + result);
		} catch (Exception e) {
//			if(jpModel!=null){
//				logger.debug("------推送异常:type:"+jpModel.getType()+"|title:"+jpModel.getTitle()+"|dataId:"+jpModel.getDataId()+"|Error:" +e.getMessage()+"------");
//			}
			buffer.append(",|推送异常:"+e.getMessage()+"|");
			message.setMessage(buffer.toString());
			messageServiceI.save(message);
			e.printStackTrace();
		}
		
	}
	
	public void jPush_rigstId(List<String> rigstId, JPushChatModel jpModel) {
		Message message=new Message();
		StringBuffer buffer=new StringBuffer();
		try {
			
			if(jpModel!=null){
				if(jpModel.getTitle()!=null){
					buffer.append("|title:"+jpModel.getTitle()+"|");
				}
				if(jpModel.getContent()!=null){
					buffer.append(",|content:"+jpModel.getContent()+"|");
				}
				if(jpModel.getType()!=null){
					buffer.append(",|type:"+jpModel.getType()+"|");
				}
				if(jpModel.getDataId()!=null){
					buffer.append(",|dataId:"+jpModel.getDataId()+"|");
				}
				buffer.append(",|alias{");
				for(int i=0;i<rigstId.size();i++){
					if(i==rigstId.size()-1){
						buffer.append(rigstId.get(i));
					}else{
						buffer.append(rigstId.get(i)+",");
					}
				}
				buffer.append("}|");
				message.setId(UUID.randomUUID().toString());
				message.setTime(TimeUtils.getTime("yyyy-MM-dd HH:mm:ss"));
			}
			JPushClient jpushClient = new JPushClient(jPushMasterSecret,
					jPushAppKey, 3);
			PushPayload payload =rigstId_buildPushObject_ios_audienceMore_messageWithExtras(
					rigstId, jpModel);
			PushResult result = jpushClient.sendPush(payload);
			buffer.append(",|推送成功:"+result+"|");
			message.setMessage(buffer.toString());
			messageServiceI.save(message);
//			logger.info("推送日志:" + result);
		} catch (Exception e) {
//			logger.error("------推送异常:type:"+jpModel.getType()+"|title:"+jpModel.getTitle()+"|content"+jpModel.getContent()+"|dataId:"+jpModel.getDataId()+"|Error:" +e.getMessage()+"------");
			buffer.append(",|推送异常:"+e.getMessage()+"|");
			message.setMessage(buffer.toString());
			messageServiceI.save(message);
			e.printStackTrace();
		}
	}
	
	public static PushPayload alias_buildPushObject_ios_audienceMore_messageWithExtras(
			List<String> alias, JPushChatModel model) {
		return PushPayload
				.newBuilder()
				.setPlatform(Platform.all())
				.setAudience(Audience.alias(alias))
				.setNotification(
						Notification
								.newBuilder()
								.addPlatformNotification(
										IosNotification
												.newBuilder()
												.setAlert(model.getContent())
												.setBadge(5)
												.addExtra("type",
														model.getType())
												// 跳转类型type
												.addExtra("content",
														model.getContent())
												.addExtra("title",
														model.getTitle())
												.addExtra("sendUserId",
														model.getSendUserId())
												.addExtra("url", model.getUrl())
												.addExtra("dataId",
														model.getDataId()) // 文章ID

												.build())
								.addPlatformNotification(
										AndroidNotification
												.newBuilder()
												.setAlert(model.getContent())
												.setTitle(model.getTitle())
												.addExtra("type",
														model.getType())
												.addExtra("content",
														model.getContent())
												.addExtra("title",
														model.getTitle())
												.addExtra("sendUserId",
														model.getSendUserId())
												.addExtra("url", model.getUrl())
												.addExtra("dataId",
														model.getDataId())
												.build()).build())
				.setOptions(
						Options.newBuilder().setApnsProduction(true).build())
				.build();
	}
	
	
	public static PushPayload rigstId_buildPushObject_ios_audienceMore_messageWithExtras(
			List<String> rigstId, JPushChatModel model) {
		return PushPayload
				.newBuilder()
				.setPlatform(Platform.all())
				.setAudience(Audience.registrationId(rigstId))
				.setNotification(
						Notification
								.newBuilder()
								.addPlatformNotification(
										IosNotification
												.newBuilder()
												.setAlert(model.getContent())
												.setBadge(5)
												.addExtra("type",
														model.getType())
												// 跳转类型type
												.addExtra("content",
														model.getContent())
												.addExtra("title",
														model.getTitle())
												.addExtra("sendUserId",
														model.getSendUserId())
												.addExtra("url", model.getUrl())
												.addExtra("dataId",
														model.getDataId()) // 文章ID

												.build())
								.addPlatformNotification(
										AndroidNotification
												.newBuilder()
												.setAlert(model.getContent())
												.setTitle(model.getTitle())
												.addExtra("type",
														model.getType())
												.addExtra("content",
														model.getContent())
												.addExtra("title",
														model.getTitle())
												.addExtra("sendUserId",
														model.getSendUserId())
												.addExtra("url", model.getUrl())
												.addExtra("dataId",
														model.getDataId())
												.build()).build())
				.setOptions(
						Options.newBuilder().setApnsProduction(false).build())//这里设置的Options.newBuilder().setApnsProduction(false)是false适应iOS的测试环境,Android随意.设置的为true是iOS的生产环境.
				.build();
	}

}

这里设置的.setOptions(Options.newBuilder().setApnsProduction(false).build())设置false是适应iOS的测试环境,是true是iOS的生产环境,Android随意.

测试main方法:

	public static void main(String[] args) {
		List<String> alias = new ArrayList<>();
		alias.add("141*************9");//直接可以写
		JPushChatModel jpModel = new JPushChatModel();
		jpModel.setTitle("title");
		jpModel.setContent("test测试");
		jpModel.setType("测试");
		new JPushApiClientImpl().jPush_rigstId(alias, jpModel);
	}
这里需要注意:极光推送一次推送是限制的,我这边是1000人以下,所有我推送了900一次推.代码:
package com.admin.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.admin.model.JPushChatModel;
import com.admin.model.LoginUser;
import com.admin.service.JPushApiClient;
@Component
public class XwxJpushUtil {

	@Autowired
	private JPushApiClient jPushApiClient;

	public void CareUser(JPushChatModel chat) {
		String sql = "select registrationId from user where registrationId is not null";//查询用户表的registrationId值
		Map<String, Object> params = new HashMap<String, Object>(1);
		List<LoginUser> users = lcjh2Biz.findBySqlBuildObject(sql, params, LoginUser.class, null, null);
		List<String> reigsts = new ArrayList<String>(users.size());
		for (LoginUser loginUser2 : users) {
			reigsts.add(loginUser2.getRegistrationId());
		}
		int listSize = reigsts.size();
		int toIndex = 900;
		int keyToken = 0;
		for (int i = 0; i < reigsts.size(); i += 900) {
			if (i + 900 > listSize) { // 作用为toIndex最后没有900条数据则剩余几条newList中就装几条
				toIndex = listSize - i;
			}
			List newList = reigsts.subList(i, i + toIndex);
			jPushApiClient.jPush_rigstId(newList, chat);
			keyToken++;
		}

	}

}

推送的model类:

package com.admin.model;

import java.util.Date;

/**
 * 消息推送
 * 
 * @author Mr.ShyMe
 * 
 */
public class JPushChatModel {
	private String type;
	private String title;
	private String content;
	private String sendUserId;
	private String url;

	private String dataId; // 文章ID
	private String wzType; // 文章类型

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getSendUserId() {
		return sendUserId;
	}

	public void setSendUserId(String sendUserId) {
		this.sendUserId = sendUserId;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getDataId() {
		return dataId;
	}

	public void setDataId(String dataId) {
		this.dataId = dataId;
	}

	public String getWzType() {
		return wzType;
	}

	public void setWzType(String wzType) {
		this.wzType = wzType;
	}

}

推送解决大笑

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值