APNS推送Golang SDK使用Proxy代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APNS推送Golang SDK使用Proxy代理相关的知识,希望对你有一定的参考价值。

参考技术A

苹果的消息推送是通过请求域名:https://api.push.apple.com 实现的,该域名解析结果为美国,这引发了两个问题:

1、接口请求时间长,性能低,而且容易请求超时报错

2、高峰期推送请求错误率升高

总体思路:增加一个美国代理服务器,通过代理服务器请求苹果消息推送服务

1、原来流程

2、现在流程

3、具体方案实施选择

选择一:proxy服务器,部署一个正向代理服务,提供push消息的正向代理,消息通过代理服务器送达苹果服务端

选择二:proxy服务器,独立实现、部署一个 标准的apns服务,负责 ios消息推送。将需要走美国节点的请求转发到该proxy节点

具体情况、具体分析,应思考的点:

问题一、苹果官方提供的SDK中,不支持设置代理服务器。官方SDK不适合更改,对以后系统更新不利

问题二、只有苹果的push服务需要代理,其他例如华为、小米、vivo不应走海外代理

问题三、代理安全性

问题四、代理方案下,有重试逻辑。 如何准确定义和判断失败, 可能会引起消息重复推送

问题五、实现简单、有效,正向代理方式:只需实现一个实例化对象方法,其他利用原始sdk即可。独立apns服务方式:需要实现一个apns服务,国内、国外均需服务部署,需要增加独立的开发和运营成本,另外还得改造调用服务,实现请求调度,优点服务独立、单一,具备一个单独微服务条件

github.com/sideshow/apns2

方法一: 修改SDK文件

第一步:设置环境变量

第二步:修改apns2.NewClient方法

方法二: 从新定义一个NewClient方法

IBM Worklight 5.0.6.1 - 通过代理服务器推送通知

【中文标题】IBM Worklight 5.0.6.1 - 通过代理服务器推送通知【英文标题】:IBM Worklight 5.0.6.1 - Push Notification through Proxy Server 【发布时间】:2013-09-10 04:13:35 【问题描述】:

我想使用代理服务器进行推送通知。在worklight.properties中,如何指定APNS的用户名和密码?

#   Push GCM proxy settings
#push.gcm.proxy.enabled=false
# protocol may be either http or https
#push.gcm.proxy.protocol=
#push.gcm.proxy.host=
# negative value means default port
#push.gcm.proxy.port=-1
#push.gcm.proxy.user=
#push.gcm.proxy.password=

#   Push APNS proxy settings
#push.apns.proxy.enabled=false
# only SOCKS proxy is supported at the moment
#push.apns.proxy.type=SOCKS
#push.apns.proxy.host=
#push.apns.proxy.port=

【问题讨论】:

我假设你已经尝试过 push.apns.proxy.username/password? 是的,试过了。似乎在 APNSMediator.java (com.worklight.integration.notification.apns) 中,没有定义这样的属性?我只能看到 push.apns.proxy.enabled、push.apns.proxy.type、push.apns.proxy.host 和 push.apns.proxy.port 【参考方案1】:

好的,我已经检查过了。

对于推送通知,Worklight 使用notnoop。 Worklight 中捆绑的当前版本在 APNS 代理中不支持用户名/密码(它是 SOCKS 类型,我也不确定它是否完全支持这种方法)。捆绑版本中不存在。

注意:在 Worklight 中不能升级 notnoop,它是集成在其中的。

【讨论】:

谢谢伊丹。因为可以在 Worklight 中指定 GCM 的用户名和密码。我假设它在 GCM 代理中受支持?

以上是关于APNS推送Golang SDK使用Proxy代理的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS SNS 向特定 APNS 令牌发送推送通知

APNS 内容可用推送在 iOS 15 中不起作用

APNS

golang http proxy反向代理

解决go包管理代理网址无法访问:proxy.golang.org

5分钟用Go语言(Golang)实现一个HTTP代理(Proxy)