首页 > 编程知识 正文

android推送sdk比较(第三方推送sdk)

时间:2023-05-05 02:52:16 阅读:104546 作者:3968

问题背景

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

1.接口请求时间长,性能低,请求超时容易报错。

2.推送请求的错误率在高峰期间会增加。

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

1.原始流程

2.当前流程

3.具体方案实施的选择

方案一:代理服务器,部署前向代理服务,为推送消息提供前向代理,消息通过代理服务器传递给苹果服务器。

选项2:代理服务器,独立实现和部署标准apns服务,负责推送ios消息。将需要转到美国节点的请求转发到代理节点。

方案制定

具体情况,具体分析,需要考虑的点:

首先,苹果提供的官方SDK不支持设置代理服务器。官方的SDK不适合改动,对以后的系统更新不利。

第二,只需要代表苹果的推送服务,华为、小米、vivo等其他不应该在海外代表。

第三,代理安全

第四,在代理方案下,有重试逻辑。如何准确定义和判断失败可能会造成消息的重复推送。

5.实现简单、有效、正向代理模式:只需要实现一个实例化对象方法,其他可以使用原sdk。自主apns服务模式:需要实现一个apns服务,需要在国内外进行服务部署,需要增加自主开发和运营成本。此外,还需要对调用服务进行改造,实现请求调度。优点是服务独立、单一,具有独立的微服务条件。

方案选择

github.com/sideshow/apns2

代理SDK(解决方案前提)

hmdhm:修改SDK文件

第一步:设置环境变量。

导出http _ proxy=http://my . proxy server.com :80

导出https _ proxy=https://my . proxy server.com 3360443步骤2:修改apns2。新客户端方法

func NewClient(证书tls。证书)*客户端{

tlsConfig :=tls。配置{

证书: []tls。证书{证书},

}

if len(证书。证书)0

tlsConfig。BuildNameToCertificate()

}

transport :=* http . DefaultTransport .(* http。运输)

运输。TLSClientConfig=tlsConfig

err :=http2。配置传输(传输)

如果出错!=零

恐慌

}

返回客户端{

HTTPClient: http。客户端{

运输:运输,

Timeout: HTTPClientTimeout,

},

证书e:证书,

主机:默认主机,

}

}方法2 :重新定义了一个NewClient方法。

func NewProxyClient(证书tls。证书)*apns2。客户端{

proxyUrl,err :=url。解析(' https://my . proxy server.com :443 ')

如果出错!=零

返回零

}

tlsConfig :=tls。配置{

证书: []tls。证书{证书},

}

if len(证书。证书)0

tlsConfig。BuildNameToCertificate()

}

传输:=http。运输

TLSClientConfig: tlsConfig,

ForceAttemptHTTP2:为真,

代理: http。proxurl(proxurl),

}

http2。配置传输(传输)

proxyClient :=apns2。新客户(证书)。生产()

临近客户端。传输=传输

返回代理客户端

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。