当前位置: > > > Swift - JPush极光推送的使用2(PHP调用服务接口给所有人发推送)

Swift - JPush极光推送的使用2(PHP调用服务接口给所有人发推送)

在前文中:Swift - JPush极光推送的使用1(配置、简单的推送测试样例)。介绍了移动客户端如何配置使用 JPush SDK。当时是登录到极光控制台,来发送推送消息进行测试的。但通常在实际项目中,我们会有专门的应用服务器来管理所有的用户,设备、消息等。
极光提供了完善的 REST API 接口,以及各个服务器语言专用的 SDKJAVAPythonC#PHPNodejsRuby)。我们服务器后台只要调用一下相应的接口就可以进行消息推送了。
下面演示后台使用 PHP SDK ,给所有人发送消息。(客户端还是使用前文那个,这里就不再说明了。)

1,使用PHP SDK推送广播消息 
虽然我们使用 REST API 来推送也是可以的,但使用 JPush PHP SDK 的话会更加方便快捷。
(1)首先到“资源下载”页面下载服务端 SDK。地址:https://docs.jiguang.cn/jpush/resources/#sdk_1

(2)将压缩包解压,里面除了接口文件外还提供了样例代码。我们使用时,只需要把压缩包里的 src 文件夹,以及 autoload.php 文件上传到服务器项目目录下。(我这里是放到 JPush 文件夹下。)

(3)在需要使用 JPush 的文件中,引入“autoload.php”即可。
require 'JPush/autoload.php';

(4)下面是一个完整的页面代码
注意:setOptions 方法里的第四个参数。用来指定 APNs 是否是生产环境。true 表示推送到生产环境,false 表示推送到开发环境。
<?
//引入代码
require 'JPush/autoload.php';

use JPush\Client as JPush;

if(isset($_POST["message"])){
  //初始化
  $app_key = "7b528331738ec719165798fd";
  $master_secret = "32da4e2c06ac7b55da2c9228";
  $client = new JPush($app_key, $master_secret);

  //简单的推送样例
  $result = $client->push()
      ->setPlatform('ios', 'android')
      ->addAllAudience()
      ->setNotificationAlert($_POST["message"])
      ->options(array(
        "apns_production" => true  //true表示发送到生产环境(默认值),false为开发环境
      ))
      ->send();

  echo 'Result=' . json_encode($result);
}
?>
<html>
  <head>
  </head>
  <body>
    <form action="index.php" method="post">
      <input type="text" name="message"/>
      <button type="submit">推送广播通知</button>
    </form>
  </body>
</html>

2,运行测试
(1)将上面的 php 页面上传到服务器并访问,页面显示如下:

(2)在输入框中填写需要发送的通知消息,点击“推送广播通知”按钮。即可调用 JPust API 接口,将消息推送到所有的设备上。同时推送完毕后,页面上会显示接口调用的返回结果。

(3)推送完毕后,手机这边也成功地显示出通知消息。


3,更完整的推送示例
上面演示的只是 php 调用 sdk 的一个最简单的样例。其实 JPush SDK 提供的 API 接口配置还是很丰富的,比如下面是一个完整的推送示例。其中包含指定 Platform,指定 AliasTag,指定 iOSAndroid notification,指定 Message 等。
(对于向指定的 AliasTag 设备推送通知,后面我还会写两篇相关文章来说明。)
//简单的推送样例
$result = $client->push()
     ->setPlatform('ios', 'android')
     ->addAlias('alias1')
     ->addTag(['tag1', 'tag2'])
     //->addAllAudience()
     ->setNotificationAlert('Hello, JPush')
     ->iosNotification('hello', [
       'sound' => 'sound',
       'badge' => '+1',
       'extras' => [
         'key' => 'value'
       ]
     ])
     ->androidNotification('hello', [
       'title' => 'title',
       'extras' => [
         'key' => 'value'
       ]
     ])
     ->message('Hello JPush', [
       'title' => 'Hello',
       'content_type' => 'text',
       'extras' => [
         'key' => 'value'
       ]
     ])
     ->options(array(
       "apns_production" => true,
       'sendno' => 100,
       'time_to_live' => 100,
       //'big_push_duration' => 5
       //'override_msg_id' => 100,
     ))
     ->send();
评论4
  • 4楼
    2017-10-26 17:06
    折翼舞沙场

    航哥 我按照你的操作步骤弄,为什么到极光推送里面看到的都是目标0成功0 IOS 跟安卓都是这样

    站长回复

    应该是哪里配置的不对,推送时找不到目标手机。你再仔细检查下。

  • 3楼
    2017-09-14 11:49
    pgwlls

    航哥!这个极光推送的 要发自定义消息怎么做, 我看官方的文档,写的发出去都是通知呀

    站长回复

    可以参考我的这一篇文章:Swift - JPush极光推送的使用7(发送自定义消息)

  • 2楼
    2016-11-11 17:16
    火麒麟

    航哥,我遇到一个问题,真机可以收到推送消息,但是点击这个消息,如何处理这个消息,就是点击这个消息,进入相应的界面

    站长回复

    这个我后面的文章有写到,不知你看到没有:Swift - JPush极光推送的使用5(发送通知时附带自定义参数)

  • 1楼
    2016-07-12 12:49
    苦茶。

    航哥,使用极光推送,是否一定需要付费的开发者账号呢?开发环境和生产环境是什么意思该怎么选择

    站长回复

    是的,这个一定要有付费的开发者账号才行,有了你才能创建推送证书。

    测试机上用开发环境,实际部署的应用用生产环境。避免你这边发送推送测试,那边生产环境的机子也收到推送。