最近用到友盟给 IOS 应用推送消息,友盟的推送分为单播,列播,广播,组播,文件播,和自定义播,在使用自定义播官方 PHP SDK 发现官方示例( PHP SDK v1.4 )有误。
主要问题,一个是请求 url 需要加 sign 签名,一个是解析数组 json_decode 函数使用问题,还有一个废弃的校验参数。
官方 SDK 版本 :PHP SDK v1.4
文件名称:notification/ios/IOSCustomizedcast.php
1.请求 url 加签名
uploadContents 方法发送 curl 请求之前加上:
$url = $this->host . $this->uploadPath;
$postBody = json_encode($post);
$sign = md5("POST" . $url . $postBody . $this->appMasterSecret);
$url = $url . "?sign=" . $sign;
2.解析返回结果 json_decode 使用错误
同样是 uploadContents 方法,解析 curl 结果处修改为:
$returnData = json_decode($result, true);
加 true 参数,后面用到的是数组的形式,而不是对象的形式。
3.去除多余参数
同样是 uploadContents 方法开头处,去掉如下代码:
if ($this->data["validation_token"] == NULL)
throw new Exception("validation_token should not be NULL!");
该文件经过以上修改之后,推送消息成功。
同时这个问题已经在友盟官网论坛上发帖反馈。希望官方推出一个更完善的 PHP SDK,如针对不同的 PHP 框架,或出一个 composer 版本,建议官方人员对示例多加测试,以免误导开发者,有时间的话也可以自己封装一个。
友盟推送官方 API 说明文档: http://dev.umeng.com/push/ios/api-doc