MiPushCommon.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Libs\Push\XMPush;
  3. class MiPushCommon
  4. {
  5. private $_reg_arr = [];
  6. /**
  7. * XMPushCommon constructor.
  8. * @param $package
  9. * @param $appSecret
  10. */
  11. public function __construct($package, $appSecret)
  12. {
  13. // 常量设置必须在new Sender()方法之前调用
  14. Constants::setPackage($package);
  15. Constants::setSecret($appSecret);
  16. }
  17. public function setRegArr($regArr)
  18. {
  19. $this->_reg_arr = $regArr;
  20. }
  21. /**
  22. * 发送消息
  23. * @param $title
  24. * @param $desc
  25. * @param $url
  26. * @return mixed
  27. */
  28. public function sendMessage($title, $desc, $url)
  29. {
  30. $sender = new Sender();
  31. $message = $this->buildMessage($title, $desc, $url);
  32. return $sender->sendToIds($message, $this->_reg_arr)->getRaw();
  33. }
  34. /**
  35. * 向所有设备发送消息
  36. * @param $title
  37. * @param $desc
  38. * @param $url
  39. * @return mixed
  40. */
  41. public function sendMessageToAll($title, $desc, $url)
  42. {
  43. $sender = new Sender();
  44. $message = $this->buildMessage($title, $desc, $url);
  45. return $sender->broadcastAll($message)->getRaw();
  46. }
  47. /**
  48. * @param $title
  49. * @param $desc
  50. * @param $url
  51. * @param int $pusType
  52. * @param string $payload
  53. * @return Builder
  54. */
  55. private function buildMessage($title, $desc, $url, $pusType = 0, $payload = '')
  56. {
  57. $message = new Builder();
  58. $message->title($title); // 通知栏的title
  59. $message->description($desc); // 通知栏的descption
  60. $message->passThrough($pusType); // 这是一条通知栏消息,如果需要透传,把这个参数设置成1,同时去掉title和descption两个参数
  61. $message->payload($payload); // 携带的数据,点击后将会通过客户端的receiver中的onReceiveMessage方法传入。
  62. $message->extra(Builder::intentUri, $url); // 此处设置预定义点击行为,1为打开app
  63. $message->extra(Builder::notifyEffect, 2); // 此处设置预定义点击行为,1为打开app 2通知栏点击后打开app的任一Activity
  64. $message->extra(Builder::notifyForeground, 1); // 应用在前台是否展示通知,如果不希望应用在前台时候弹出通知,则设置这个参数为0
  65. $message->notifyId(2); // 通知类型。最多支持0-4 5个取值范围,同样的类型的通知会互相覆盖,不同类型可以在通知栏并存
  66. $message->build();
  67. return $message;
  68. }
  69. }