全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
移动推送

php

更新时间:2017-09-04 18:48:26

1 获取AccessKeyId和AccessKeySecret

为了保证云服务的安全,您需要创建一个能访问移动推送资源的 RAM 子账号,获取该子账号的 AK 密钥,并使用这个 RAM 子账号调用移动推送 OpenAPI。

以下是获取 RAM 子账号 AK 密钥的操作步骤:

2 获取appKey

>>前往移动推动控制台获取 app列表->应用证书

3 引入SDK依赖

  1. include_once '../aliyun-php-sdk-core/Config.php';
  2. include 'Push/Request/V20160801/PushRequest.php';
  3. use \Push\Request\V20160801 as Push;

4 示例代码(替换成您的AccessKeyId、AccessKeySecret、appKey)

  1. // 设置你自己的AccessKeyId/AccessSecret/AppKey
  2. $accessKeyId = "your accessKeyId";
  3. $accessKeySecret = "your accessKeySecret";
  4. $appKey = "your appKey";
  5. $iClientProfile = DefaultProfile::getProfile("cn-hangzhou", $accessKeyId, $accessKeySecret);
  6. $client = new DefaultAcsClient($iClientProfile);
  7. $request = new Push\PushRequest();
  8. // 推送目标
  9. $request->setAppKey($appKey);
  10. $request->setTarget("ALL"); //推送目标: DEVICE:推送给设备; ACCOUNT:推送给指定帐号,TAG:推送给自定义标签; ALL: 推送给全部
  11. $request->setTargetValue("ALL"); //根据Target来设定,如Target=device, 则对应的值为 设备id1,设备id2. 多个值使用逗号分隔.(帐号与设备有一次最多100个的限制)
  12. $request->setDeviceType("ANDROID"); //设备类型 ANDROID iOS ALL.
  13. $request->setPushType("MESSAGE"); //消息类型 MESSAGE NOTICE
  14. $request->setTitle("php title"); // 消息的标题
  15. $request->setBody("php body"); // 消息的内容
  16. // 推送配置: iOS
  17. $request->setiOSBadge("5"); // iOS应用图标右上角角标
  18. $request->setiOSMusic("default"); // iOS通知声音
  19. $request->setiOSApnsEnv("DEV");//iOS的通知是通过APNs中心来发送的,需要填写对应的环境信息。"DEV" : 表示开发环境 "PRODUCT" : 表示生产环境
  20. $request->setiOSRemind("false"); // 推送时设备不在线(既与移动推送的服务端的长连接通道不通),则这条推送会做为通知,通过苹果的APNs通道送达一次(发送通知时,Summary为通知的内容,Message不起作用)。注意:离线消息转通知仅适用于生产环境
  21. $request->setiOSRemindBody("iOSRemindBody");//iOS消息转通知时使用的iOS通知内容,仅当iOSApnsEnv=PRODUCT && iOSRemind为true时有效
  22. $request->setiOSExtParameters("{\"k1\":\"ios\",\"k2\":\"v2\"}"); //自定义的kv结构,开发者扩展用 针对iOS设备
  23. // 推送配置: Android
  24. $request->setAndroidNotifyType("NONE");//通知的提醒方式 "VIBRATE" : 震动 "SOUND" : 声音 "BOTH" : 声音和震动 NONE : 静音
  25. $request->setAndroidNotificationBarType(1);//通知栏自定义样式0-100
  26. $request->setAndroidOpenType("URL");//点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
  27. $request->setAndroidOpenUrl("http://www.aliyun.com");//Android收到推送后打开对应的url,仅当AndroidOpenType="URL"有效
  28. $request->setAndroidActivity("com.ali.demo.OpenActivity");//设定通知打开的activity,仅当AndroidOpenType="Activity"有效
  29. $request->setAndroidMusic("default");//Android通知音乐
  30. $request->setAndroidPopupActivity("com.ali.demo.PopupActivity");//设置该参数后启动辅助托管弹窗功能, 此处指定通知点击后跳转的Activity(辅助弹窗的前提条件:1. 集成第三方辅助通道;2. StoreOffline参数设为true
  31. $request->setAndroidPopupTitle("Popup Title");
  32. $request->setAndroidPopupBody("Popup Body");
  33. $request->setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}"); // 设定android类型设备通知的扩展属性
  34. // 推送控制
  35. $pushTime = gmdate('Y-m-d\TH:i:s\Z', strtotime('+3 second'));//延迟3秒发送
  36. $request->setPushTime($pushTime);
  37. $expireTime = gmdate('Y-m-d\TH:i:s\Z', strtotime('+1 day'));//设置失效时间为1天
  38. $request->setExpireTime($expireTime);
  39. $request->setStoreOffline("false"); // 离线消息是否保存,若保存, 在推送时候,用户即使不在线,下一次上线则会收到
  40. $response = $client->getAcsResponse($request);
  41. print_r("\r\n");
  42. print_r($response);
本文导读目录