最近uni-push 2.0推出来后,因为我司系统之前接入的个推1.0出现不稳定情况,所以决定换成uni-push 2.0。
在接入的过程中,不是很顺利,现在把采坑点列出,并附解决方法。帮助同为码农的你。
首先,配下自己的云url,这个怎么配,去看官网文档,很详细。配好后,简单的用api工具请求下这个url是否正确。
![](https://i-blog.csdnimg.cn/blog_migrate/16be92f303a0eb2c4c4afa42e405012d.png)
如果请求后,发信息发送到自己的测试机上,说明云url没问题。
后面自信满满的用php代码封装了请求方法。
![](https://i-blog.csdnimg.cn/blog_migrate/cd62669c9d5b699cff09967e3263f79e.png)
一请求发现第一次是成功的,第二次报如下问题。duplicate message content。一开始我以为是官方防机器请求,所以有这个限制,所以我聪明的给它加上header里的各种头,结果还是一样。
![](https://i-blog.csdnimg.cn/blog_migrate/467c53e126f214d16d57a2f71584aeff.png)
后面云咨询了官方技术支持。
官方回复是:服务器没有接收到cid,所以被认为是群发,而群发是每分钟5次的限制。
这个就奇怪了,我明明传了cid呀。
![](https://i-blog.csdnimg.cn/blog_migrate/3caa9848722d6c83963489bdfa93cb3e.png)
后来,自己再去官网查文档,认认真真的把文档从头过一遍。发现url后,有后端可查看请求日志,点进去发现我请求的中文怎么被编码了。
![](https://i-blog.csdnimg.cn/blog_migrate/6a05bb4459a5a97af5f9e0b2e3eae4ee.png)
找到了问题点,那我们就得去改我们的请求入参了,在那个环节被编码过。
顺着源码,我找我司封装的curl请求方法,在这个地方被编码过。但我的content-type声明的是text,所以被当文本处理了,
所在这里我改了:1去掉json_encode 或是 把content-type改成application/json
![](https://i-blog.csdnimg.cn/blog_migrate/d0bc8ecf7e13dd68404499118e78e541.png)
编辑下内容,请求成功。
![](https://i-blog.csdnimg.cn/blog_migrate/5617cf9ef7e9e6037ac7f6cdb24635fe.png)
我同事见这样curl不够优雅,所以叫我换成 GuzzleHttp,好吧,换上确实能省不少代码。
![](https://i-blog.csdnimg.cn/blog_migrate/dd6f20f3549f3b75f71756ebff5bd1f7.png)
如上图,确实也能请求成功,发送信息了。