urban airship实现消息内容的推送
来源:互联网 发布:rgb转换 算法 编辑:程序博客网 时间:2024/05/01 00:09
首先介绍一下urban airship是个什么样的东西。在我们使用手机的时候,经常会受到一些类似于弹窗的东西,会给我们一些提示,可能是微信等一些聊天工具发出的“你受到了一条消息”,这一类我们称为消息推送。苹果有APNs是针对ios做的推送服务,但是对于其他的手机用户,就无法使用APNs了。这个时候,如果有对所有类型的手机进行推送请求的需求诞生,是否针对不同手机就需要使用不同的推送服务呢?这个时候我们需要其他的推送方式,而urban airship就是其中之一。
https://docs.urbanairship.com/index.html 参考文档
上述文档链接包含了urban airship的接口和api。
先看一份推送请求的样例
curl https://go.urbanairship.com/api/lists/ \ -X POST \ -u "<AppKey>:<MasterSecret>" \ -H "Accept: application/vnd.urbanairship+json; version=3" \ -H "Content-Type: application/json" \ -d '{ "audience": { "static_list": "weekly_offers" }, "device_types": "all", "notification": { "alert": "Check out these deals!", "open": { "type": "deep_link", "content": "offers" } } }'(可以使用postman进行调试)
url我们可以在参考文档当中找到(目前使用https://go.urbanairship.com/api/push/)。因为我们是想urban airship发送的请求,所以请求种类填写POST。
<AppKey>:<MasterSecret>是用于登录urbanship的账号和密码,这个需要你在官网进行申请,会有正式用和测试用两种。之后是放在header当中的一些参数,主要是你所要使用的版
本以及之后发送的data内容格式(json)。
接下来的data内容才是重点,这里面有五个顶级属性Audience ,Notification Payload , Device Types ,Delivery Options ,Rich Message Content (Optional)
audience用于确定你推送的对象,可以采取直接对于设备地址进行推送,可以使用Channel,APID等属性。另外也可以依据其他一些属性进行对象选择,Named Users是一个很好用的属性,(aliases原先和named users是相同的功能但是现在已经被named users取代),我们可以利用named users发给指定的用户,同时我们也可以发给一类用户群体,使用tags或者tag froups可以让你对标有这类标签的对象进行推送。关于audience信息的设置,可以采取在用户登录你的应用时候,对其进行备注,然后将你设置的信息发送给urban airship,我们在服务器端进行推送的时候,就可以利用audience的信息发送至urban airship实现交互确认。
Notification Payload 这表示我们使用的是Notification进行推送,里面最简单,也是最重要的一个属性就是alert,这个属性需要使用就json格式填写信息,你所填写的信息也将是推送给用户的信息。
Device Types 表示推送设备的类型,可以是all代表推送给所有类型的设备,也可以是ios, android ,blackberry ,wns ,mpns这几种类型,要注意的是Device Types是一个数组。
一般而言,在填写了上述三个属性之后,就可以进行消息的推送了。至于Delivery Options,目前只有唯一的选项expirty。Rich Message Content (Optional)这也是一个可以选择的项,用于丰富你的推送内容。
附上一份php封装推送的代码
class push {...function pushtoios ($appid, $apppassword, $user_id) { $loginInformation = $appid . ":" . $apppassword; $username = $user_id .; $headers = array(); $headers[] = "Content-Type: application/json"; $headers[] = "Accept: application/vnd.urbanairship+json; version=3"; $alert_info = "HELLO"; $datasArray = array('audience' => array('named_user' => $username), 'notification' => array('alert' => $alert_info), 'device_types' => array("ios")); $datas = json_encode($datasArray); $response = $this->http_request($url, $datas, 'POST', $headers, $loginInformation);} function http_request($url, $params, $request_type = 'POST', $header = false, $loginInformation = null, $connectTimeout = 15, $readTimeout = 15) { $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, $readTimeout); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $connectTimeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); if($header) { curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); } if (!empty($loginInformation)) { curl_setopt($ch, CURLOPT_USERPWD, $loginInformation); } curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $request_type); if ($request_type == 'POST') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); } curl_setopt($ch, CURLOPT_URL, $url); $result = curl_exec($ch); curl_close($ch); return $result;}}如果返回结果为true,则表示推送成功
- urban airship实现消息内容的推送
- 实践陈老师的urban Airship 推送的心得。
- 免费iOS第三方推送工具Urban Airship使用教程
- 第三方Push服务:Urban Airship
- Android Server Push Notification - Urban Airship
- Urban Airship Server API - Java客户端实例
- Urban Airship Android Client - Helium Push
- Urban Airship Android Client - Google GCM Push
- Urban Airship在iOS中的应用
- Urban Airship在iOS中的应用
- Urban Airship在iOS中的应用
- Android Server Push Notification - Urban Airship
- 消息推送的实现
- 位置服务提供商SimpleGeo被Urban Airship收购
- ios的消息推送,Java实现的
- 极光推送-收到推送消息内容
- blazeds实现消息推送的实例
- iOS消息推送机制的实现
- MySQL XtraBackup备份脚本
- MySQL XtraBackup自动恢复脚本
- zzuli 1893 985的数学难题
- The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
- lepus3.7 天兔监控安装手册 CentOS6.5+mysql5.6
- urban airship实现消息内容的推送
- 天兔(Lepus)监控系统快速安装部署
- vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法
- 天兔(Lepus)监控系统慢查询分析平台安装配置
- 天兔(Lepus)监控操作系统(OS)安装配置
- MySQL 替换部分电话号码为000
- Android性能优化之视图篇(渲染机制)
- TIMESTAMP和DATETIME哪个好
- 字符串函数strlen()