IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Java推送IOS通知消息 -> 正文阅读

[移动开发]Java推送IOS通知消息

Java推送IOS通知消息

公司需要做IOS消息推送,我负责后台代码的实现。写这篇文章也是将我踩坑得来的结果记录一下,分享一下。

APN介绍

Apple 推送通知服务(APNs) 是远程通知功能的核心。它是一种强大、安全且高效的服务,可供应用程序开发人员将信息传播到 iOS(以及间接的 watchOS)、tvOS 和 macOS 设备。

在用户设备上首次启动您的应用程序时,系统会自动在您的应用程序和 APN 之间建立经过认证、加密且持久的 IP 连接。此连接允许您的应用程序执行设置以使其能够接收通知,如配置远程通知支持中所述。

用于发送通知的另一半连接——提供者服务器和 APNs 之间持久、安全的通道——需要在你的在线开发者帐户中进行配置并使用 Apple 提供的加密证书。一个供应商是一个服务器,您部署和管理,您配置工作与的APN。

推送流程

Pushy框架

Pushy 是一个用于发送APN(iOS、macOS 和 Safari)推送通知的 Java 库。

Pushy 使用 Apple 的基于 HTTP/2 的 APNs 协议发送推送通知,并支持 TLS 和基于令牌的身份验证。它与其他推送通知库不同,它侧重于完整的文档、异步操作和工业规模操作的设计。使用 Pushy,可以轻松高效地维护与 APNs 网关的多个并行连接,以向许多不同的应用程序(“主题”)发送大量通知。

我们相信 Pushy 已经是从 Java 应用程序发送 APNs 推送通知的最佳工具,我们希望您能通过错误报告和拉取请求帮助我们做得更好。
git地址:https://github.com/jchambers/pushy
完全可以根据git的说明文档进行修改代码。

IOS推送

推送流程

  1. 首先ios端开发需要去申请Apple的加密证书 (p8或p12)
  2. iOS端开发需要提供手机的唯一token
  3. 服务端加密证书验证通过后,调用pushy的api进行消息推送

代码示例

  1. 首先项目导入maven依赖
<dependency>
    <groupId>com.eatthepath</groupId>
    <artifactId>pushy</artifactId>
    <version>0.15.0</version>
</dependency>
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-tcnative-boringssl-static</artifactId>
    <version>2.0.41.Final</version>
    <scope>runtime</scope>
</dependency>

获取apple证书方法:https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns
因为我们项目使用的是p12证书,所以验证代码是基于p12证书编写的

final ApnsClient apnsClient = new ApnsClientBuilder()
        .setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST) //沙盒地址,生产地址是另一个
        .setClientCredentials(new File("/path/to/certificate.p12"), "p12-file-password") //p12证书的存放位置和p12证书的验证密码
        .build();

在这里插入图片描述
因为一些不可抗因素 我这边做了端口转发,如果没有端口限制,直接用默认端口443即可

final ApnsClient apnsClient = new ApnsClientBuilder()
        .setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
        .setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File("/path/to/key.p8"),
                "TEAMID1234", "KEYID67890"))
        .build();

这是 github上提供的p8证书的apns客户端方法(未尝试)
2. 推送
在这里插入图片描述
具体代码就粘在上面了,亲测好使。

总结一下会发生的坑…
因为网上有很多 pushy推送的相关代码,但是发现用的和我这个依赖并不是一个依赖,里面的服务器地址并不对,所以一直推送报错。
还有一个致命的问题,如果你的项目pom的parent集成了netty相关的依赖,而且版本过低。会导致在apns连接时报错…提示的报错也很坑。java.lang.exception: not support using BoringSSL
还以为是证书有问题,和ios那边确认了好久…

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 12:00:17  更:2021-10-19 12:02:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:31:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码