Swift - JPush极光推送的使用2(PHP调用服务接口给所有人发推送)
在前文中:Swift - JPush极光推送的使用1(配置、简单的推送测试样例)。介绍了移动客户端如何配置使用 JPush SDK。当时是登录到极光控制台,来发送推送消息进行测试的。但通常在实际项目中,我们会有专门的应用服务器来管理所有的用户,设备、消息等。
(2)将压缩包解压,里面除了接口文件外还提供了样例代码。我们使用时,只需要把压缩包里的 src 文件夹,以及 autoload.php 文件上传到服务器项目目录下。(我这里是放到 JPush 文件夹下。)
(4)下面是一个完整的页面代码
注意:setOptions 方法里的第四个参数。用来指定 APNs 是否是生产环境。true 表示推送到生产环境,false 表示推送到开发环境。
2,运行测试


极光提供了完善的 REST API 接口,以及各个服务器语言专用的 SDK(JAVA、Python、C#、PHP、Nodejs、Ruby)。我们服务器后台只要调用一下相应的接口就可以进行消息推送了。
下面演示后台使用 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,指定 Alias,Tag,指定 iOS,Android notification,指定 Message 等。
(对于向指定的 Alias、Tag 设备推送通知,后面我还会写两篇相关文章来说明。)
//简单的推送样例
$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();

航哥 我按照你的操作步骤弄,为什么到极光推送里面看到的都是目标0成功0 IOS 跟安卓都是这样
航哥!这个极光推送的 要发自定义消息怎么做, 我看官方的文档,写的发出去都是通知呀
航哥,我遇到一个问题,真机可以收到推送消息,但是点击这个消息,如何处理这个消息,就是点击这个消息,进入相应的界面
航哥,使用极光推送,是否一定需要付费的开发者账号呢?开发环境和生产环境是什么意思该怎么选择