PPMESSAGE 集成了 iOS 推送;是指通过 PPMESSAGE 可以给你的客户发送 iOS 推送消息,如果你曾经安装过 ‘易到用车’ 或者 ‘ofo’ 还有 ‘回家吃饭’ 等等这样的 APP,一旦你同意它能给你推送消息,它们几乎是没有节制的给你推送消息,天天告诉你大减价、大馅饼、大优惠、大便宜再不捡就没了,几十个亿马上就要错过。。。不怼它们啦,还是说说自己吧。
通过 PPMESSAGE 集成 iOS 推送,你可以有节制,有目的的推送,通过流程配置和用户细分只对那些你感兴趣的用户进行推送消息,对那些不打开程序的反复推送只能加剧删除你 APP 的决心。当然这一切都是猜测,需要有数据支持,究竟什么样的客户,什么时候才能推送消息?这些 PPMESSAGE 都可以帮助实现,去评估推送的效果,根据用户的动作或者行为设置目标转化,通过观察数据结果来改变你的营销行为。
工具不能让你提高转化率,或者保留率,工具的滥用可能让你损失客户。但是数据化的工具可以帮助检查你的策略和用户在策略下的行为和反馈,从而朝积极或者消极的方向去调整策略(也许你就是要烦死客户,让它卸载你的 App,然后你就清净了呢)。
使用 APNs 推送具体配置方法也需要注意,因为最近 Apple 升级 APNs 的推送方法,提供了更方便的证书和推送方式,证书提供了复合证书,即一个证书即包含了开发,又有产品两套,推送协议也变成了 http2.0;最重要的是还提供了一个 Auth Key,完全替换以前的证书,这个让开发者方便了很多很多。
我在使用 APNs Auth Key 之前,到处搜索别人的经验,大多文章语焉不详,遇到了问题,Apple 的服务人员也是二呼呼的回答,跨过了很多坑后,发现 Auth Key 应该是集成 APNs 后端目前最容易的方式。
具体方法是:
-
获取 APNs Auth Key,这个要在 Apple 的开发者网站上获取,这步没坑,放心下载一个 p8 (PKCS8)的文件,聪明的你一定会问,啥是 p8?问得好,请看这里,这应该是 PKI 中私钥的封装格式,这让我想起 20 年前有个兄弟神秘的递给我一份打印资料 ‘ANS1新手入门’ ,告诉我,学习 PKI,从这个文档开始... 时光飞逝 如 白驹过隙,转眼近 20 年已经过去,不免唏嘘一下。
-
好好珍藏这个 p8 文件,使用这个 p8 好处多多,用 Apple 的话说,就是它不会过期,不然你每年都要换推送证书。好吧 p8 不是证书,不应该过期,不知道我理解的对不对?
-
打开 PPMESSAGE 后台,设置 - 第三方服务 - APNs 推送

这里面的配置信息都可以在 Apple Developer 的网站上找到对应项,那个 Key 就是 PPMESSAGE 自己的私钥,已经漏出一部分了,看谁 🐂 能破解其他的部分。(据说 Google 大牛 Jeff Dean 在加入 Google 进行面试的时候,看了一眼 Google 的证书 就把 私钥写在 黑板上,仰天大笑出门去!太牛逼了,想出这个笑话的人也很有趣。)
同时可以配置两个,一个用来开发使用,一个用来产品使用,内容都是一样的,就是 开发 和 产品的选择不同,因为这会让 PPMESSAGE 推送的时候选择 不同的推送服务器。当你的程序发布在 Apple 的 App Store的时候,你要给你的客户推送消息必须使用产品服务器。
这就可以了。配置就完事了。还没有讲坑呢?
<strong>巨坑之一:</strong>Apple 这个 p8 和程序员需要的 p8 不完全一致,Apple 不知道哪里来的三哥程序员,生成了这样的 p8 文件,导致全世界开发者都要对这个文件进行转换。事实上全球开发者都在使用一个 PKI 的库叫做 开源库-
OPENSSL,这个库 🐂 大了,说它是整个互联网数据安全、网络安全的基石,那是一点都不过分,OpenSSL 假设的 p8 文件的格式 和 Apple 交付出来的 p8 不一样,(难道 Apple 这么装,没有使用 OpenSSL,不管你信不信,我是不信),到我们这些菜鸟程序员的层面就傻逼了呀,OpenSSL 解析不了 Apple 的 p8,所以你的程序肯定不认识这个 p8。你说坑大不大,不过我已经探过这个坑了,要先把 Apple 三哥的结果 转成 OpenSSL 能够理解的就 OK了,具体转化的过程是,把 Apple p8内的信息清理干干净净,变成三行,中间一行是密钥的内容,上下两行是标志;然后再把中间行按64个字节换行,这样OpenSSL才能理解。放心,这个事情 PPMESSAGE 已经帮你完成了。但是如果你自己也要去写这个过程,就可以按照我说的去做哟。
from textwrap import wrap
def wrap_private_key(private_key):
# Wrap key to 64 lines
private_key = private_key.strip()
comps = private_key.split("\n")
wrapped_key = "\n".join(wrap(comps[1].strip(), 64))
return "\n".join([comps[0].strip(), wrapped_key, comps[2].strip()])
<strong>巨坑之二:</strong> Python Hyper,这个可能算不上巨坑了,因为毕竟很多人不使用 Python,但是我使用啊,那就是我的世界呀。这个 Python Hyper 是用来支持 HTTP2.0 的,因为 Apple 得瑟,使用了 HTTP2.0,所以你得用 HTTP2.0 跟它 TALK。Hyper 也是一个 三哥,居然不能在 Python 2.7 中不是版本兼容的,就是说每个版本的 Hyper,你可能要找到它对应的 Python 版本,这可太坑了,能坑死你,让你系统彻底废掉。具体信息你必须自己匹配版本,我被它坑的公司差点就宣布黄了,整个 Debian Linux 的 Python 全面崩溃,一顿狂修,力挽狂澜于大厦之将倾,静心之动魄只有体会过的人才能体会。。。。。一句话,千万别自己升级,让系统来,如果手欠,手动升级,赶紧祈祷吧。
<strong>巨坑之三:</strong> HTTP2.0 可不是让你每次推送都断开的,看到 HTTP,媛媛们心里暗喜,好哇,每推送一条消息就关闭,虽然费点劲,但是维护简单,费劲也是机器费劲,不是人费劲。错了,我的媛媛。这么干 Apple 会封掉你。因为连接频繁,或者同时连接数过多,都是不允许的。你必须保持住少量的连接,复用它们,并且如果真不用了,还要关了。这可真是复杂了。对这个坑 PPMESSAGE 已经替你抗了。但是如果你有开发自己推送服务的需要,这是必须要注意的。
夜黑风高,山高路远坑深。。。。。 诶呀呀 编不下去了。就到这里吧。
‘The world we live in belongs to the enemy.
我们生存的世界,属于敌人
We must live carefully.
我们得处处小心
We look out for our own kind, Remy.
同胞间要彼此观照,小米
When all is said and done, we're all we've got.
只有团结,才是王道’
好像不贴切,不过说得真好!
网友评论