官方文档:开发者中心

首先看文档得有appkey,masterkey,url!!!

分享一个小技巧

友盟自带测试工具,可以先用测试工具调通,然后去看友盟生成的数据,跟你自己组装的数据的差别在哪里!有些数据不传就是收不到的!!!但是它的文档里面没写,好了,祝你成功!

代码:

import org.apache.commons.codec.digest.DigestUtils;@Value("${appPush.url}")private String appPushUrl;@Value("${ios.appKey}")private String iosAppKey;@Value("${ios.masterKey}")private String iosMasterKey;@Value("${ios.url}")private String iosAppPushUrl;/*** 推送类型 -- 列播*/public static final String PUSH_TYPE_LIST = "listcast";/*** 推送类型 -- 组播*/public static final String PUSH_TYPE_GROUP = "groupcast";@Overridepublic void sendMessage(Long userId, String title, String content) {StaffUserDeviceTokenPO po = staffUserDeviceTokenService.selectById(userId);if(ObjectUtil.isNull(po)){log.info("用户userId:{}未绑定设备token,推送失败", userId);return;}if (po.getDeviceToken().length()>44){sendIos(po.getDeviceToken(), title, content);//调用ios}else {sendList(po.getDeviceToken(), title, content);//调用android}}
 /*** 发送列播 ios  组装数据* @param deviceTokens 设备标识* @param title 标题* @param content 内容*/public void sendIos(String deviceTokens, String title, String content){IosAlert alert=new IosAlert();alert.setTitle(title);alert.setBody(content);alert.setSubtitle(title);IosAps aps=new IosAps();aps.setAlert(alert);IosPayload payload = new IosPayload();payload.setAps(aps);IosPushQuery query = new IosPushQuery();query.setAppKey(iosAppKey);query.setType(PUSH_TYPE_LIST);query.setPayload(payload);String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));query.setTimestamp(timestamp);query.setProductionMode("false");query.setDeviceTokens(deviceTokens);String postBody = JSONObject.toJSONString(query, SerializerFeature.WriteMapNullValue);System.out.println("postBody!!!!!!!!"+postBody);postSendIOS(postBody);//调用}
 /*** ios* @param postBody*/public void postSendIOS(String postBody) {String sign = null;sign = DigestUtils.md5Hex(("POST" + iosAppPushUrl + postBody + iosMasterKey).getBytes(StandardCharsets.UTF_8));String url = iosAppPushUrl + "?sign=" + sign;log.info("start url:{} body:{}", url, postBody);System.out.println("start url:{} body:{}"+url+"!!!!!"+postBody);String result = HttpRequest.post(url).header(Header.CONTENT_TYPE, "application/json").body(postBody).execute().body();log.info("result:{}", result);}

组播:

 /*** 发送组播 ios* @param appPushFilterQuery 组播条件* @param title 标题* @param content 内容*/public void sendIosGroup(AppPushFilterQuery appPushFilterQuery, String title, String content){AppFilterWhere appFilterWhere=new AppFilterWhere();IosAlert alert=new IosAlert();alert.setTitle(title);alert.setBody(content);alert.setSubtitle(title);IosAps aps=new IosAps();aps.setAlert(alert);IosPayload payload = new IosPayload();payload.setAps(aps);IosPushQuery query = new IosPushQuery();query.setAppKey(iosAppKey);query.setType(PUSH_TYPE_GROUP);query.setPayload(payload);String timestamp = Integer.toString((int)(System.currentTimeMillis() / 1000));query.setTimestamp(timestamp);appFilterWhere.setWhere(appPushFilterQuery);query.setFilter(appFilterWhere);query.setProductionMode("false");String postBody = JSONObject.toJSONString(query, SerializerFeature.WriteMapNullValue);postSendIOS(postBody);}

组装数据的类:

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;/*** @author chenhm* @date 2022/2/25 17:35*/
@Data
public class IosAlert {@JSONField(name = "title")private String title;@JSONField(name = "subtitle")private String subtitle;@JSONField(name = "body")private String body;
}import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;/*** @author chenhm* @date 2022/2/25 17:31*/
@Data
public class IosAps {@JSONField(name = "alert")private IosAlert alert;
}@Data
public class IosPayload {@JSONField(name = "aps")private IosAps aps;
}@Data
public class IosPushQuery {@JSONField(name = "appKey")private String appKey;@JSONField(name = "timestamp")private String timestamp;@JSONField(name = "type")private String type;@JSONField(name = "device_tokens")private String deviceTokens;@JSONField(name = "payload")private IosPayload payload;@JSONField(name = "production_mode")private String productionMode;//@JSONField(name = "mipush")//private String miPush = "true";//@JSONField(name = "mi_activity")//private String miActivity = "com.hzx.azq_my.ui.activity.msg.MsgCenterActivity";@JSONField(name = "filter")private AppFilterWhere filter;
}/*** @author chenhm* @date 2021/12/27 14:48*/
@Data
public class AppFilterWhere {private AppPushFilterQuery where;
}@Data
public class AppPushFilterQuery {@JSONField(name = "and")private List<Map<String,String>> and;
}

App ios 消息推送相关推荐

  1. iOS消息推送机制的实现

    iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务 ...

  2. iOS 消息推送原理及实现总结

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图: 1. Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Prov ...

  3. ios消息推送机制原理与实现(转)

    今天给无线事业部的同事开发苹果客户端的推送接口.无线事业部就是我们公司专门开发各种终端的app的部门啦! 无线事业部的同事做事还是很体贴的,同时发给了我参考文档地址和需要的开发需要的pl2文件. 提供 ...

  4. iOS 消息推送原理及实现Demo

    为什么80%的码农都做不了架构师?>>>    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供 ...

  5. # MASA MAUI Plugin (十)iOS消息推送(原生APNS方式)

    MASA MAUI Plugin (十)iOS消息推送(原生APNS方式) 背景 MAUI的出现,赋予了广大Net开发者开发多平台应用的能力,MAUI 是Xamarin.Forms演变而来,但是相比X ...

  6. IOS消息推送之APNS

    一.背景概述: 1,环境配置 APNS:Apple Push Notification Service.本文对推送相关概念不再赘述,只侧重完整流程. Demo 开发环境:Mac os 10.9.4   ...

  7. 客户端技术:一文带你了解iOS消息推送机制

    导语 | 消息推送我们几乎每天都会用到,但你知道 iOS 中的消息推送是如何实现的吗?本文将从推送权限申请,到本地和远程消息推送,再到 App 对推送消息的处理等多个步骤,详细介绍 iOS 中消息推送 ...

  8. iOS消息推送(Java实现)

    首先来了解一下苹果的消息推送APNS(英文全称:Apple Push Notification service) 先来看两张苹果对于推送的两张解释图: 大概的意思就是,提供商把消息推送至苹果的推送服务 ...

  9. php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...

    解析php做推送服务端实现ios消息推送 准备工作1.获取手机注册应用的deviceToken(iphone手机注册应用时返回唯一值deviceToken) 2.获取ck.pem文件(做手机端的给) ...

最新文章

  1. 无法用计算机名只能用ip访问局域网计算机,win10无法通过计算机名访问共享但能用IP的解决步骤...
  2. Android4.0 Design之UI设计易犯的错误2
  3. opengl载入多个3ds模型失败记
  4. Dubbo集群容错模式之Failover实现
  5. html5中在canvas上绘图
  6. linux上怎么快速删除一个目录?
  7. 制作简单的WIFI干扰器
  8. MouseColor | 颜色获取及转换工具
  9. Netty实战项目:Spring boot 程序的聊天程序
  10. Detour hook库x64编译
  11. 第四次课后作业及Sring类型的应用
  12. 计算机考试九九乘法表,多种办法用EXCEL软件生成99乘法表
  13. Java基础static关键字理解
  14. 如何打开html格式文件?Win11打开html文件的方法
  15. java : 实现微信网页授权,超详细!
  16. 排位赛中 服务器崩溃修复后连不上,lol手游出现creating a lobby问题怎么办?服务器崩溃解决方法说明[多图]...
  17. 使用CAD偏移和阵列命令绘制图形、使用CAD旋转复制命令绘制图形
  18. Gmapping Dropped 100.00% of messages so far 解决办法
  19. win10 子系统 wsl 重置
  20. java开源工具简介

热门文章

  1. Karl Guttag:谈MicroLED AR光学难点,Mojo Vision还有很多问题
  2. 期货开户客户出入金是什么时间?
  3. buffer几种用法
  4. 网络神经科学 Network neuroscience
  5. 前端利用正则对手机号码,身份证号,姓名进行脱敏处理
  6. 日常英语精彩短句集锦
  7. excel 多列内容合并为一个单元格
  8. 湖南北云科技有限公司2023届校园招聘简章
  9. 阿里云买的域名备案成功了 后续怎么建站 ?
  10. 计算机共享文件误删怎么恢复,在电脑上不小心把共享里的EXCEL表格数据给删除了,该怎么恢复这个文件的数据啊?,excel表格里误删数据恢复...