PHP极光推送 简单示例

天大地大妈咪最大 提交于 2020-01-23 09:16:46
<?php
/**
 * 极光推送 示例
 * composer安装: composer require jpush/jpush
 * 引用 src/JPush/Client.php 类
 */
namespace Admin\Controller;
use Common\Controller\AdminbaseController;
use JPush\Client;

class TestController extends AdminbaseController {
    /**
     * Test记录
     */
    public function index() {
        $uid = 2111;//推送用户id
        $item_id = 100;//相关数据id
        //推送消息
        $alert = '充值金币';
        $message_content = '系统向你账户充值金币:100,请注意查收!';
        $alias[] = $uid.'PUSH';
        $this->push($alert,$message_content,$alias,$item_id);
    }


    /**
     * 极光推送
     * @param string $alert
     * @param string $message_content
     * @param array $alias
     * @param int $item_id
     * @return  mixed
     */
    public function push($alert,$message_content,$alias,$item_id){
        if(empty($alert)) return false;
        $config_private = M('config_private')->where(['id'=>1])->find();
        $app_key = $config_private['jpush_key'];
        $master_secret = $config_private['jpush_secret'];
        $client = new Client($app_key, $master_secret);
        try {
            $client->push()
                ->setPlatform(array('ios', 'android'))
                // 一般情况下,关于 audience 的设置只需要调用 addAlias、addTag、addTagAnd  或 addRegistrationId
                // 这四个方法中的某一个即可,这里仅作为示例,当然全部调用也可以,多项 audience 调用表示其结果的交集
                // 即是说一般情况下,下面三个方法和没有列出的 addTagAnd 一共四个,只适用一个便可满足大多数的场景需求

                ->addAlias($alias)
                // ->addTag(array('tag1', 'tag2'))
                // ->addRegistrationId($registration_id)
                //->addAllAudience()

                ->setNotificationAlert($alert)
                ->iosNotification($alert, array(
                    'sound' => 'sound.caf',
                    // 'badge' => '+1',
                    // 'content-available' => true,
                    // 'mutable-content' => true,
                    'extras' => array(
                        'id' => $item_id,
                    ),
                ))
                ->androidNotification($alert, array(
                    'title' => $alert,
                    // 'builder_id' => 2,
                    'extras' => array(
                        'id' => $item_id,
                    ),
                ))
                ->message($message_content, array(
                    'title' => $alert,
                    // 'content_type' => 'text',
                    'extras' => array(
                        'id' => $item_id,
                    ),
                ))
                ->options(array(
                    // sendno: 表示推送序号,纯粹用来作为 API 调用标识,
                    // API 返回时被原样返回,以方便 API 调用方匹配请求与返回
                    // 这里设置为 100 仅作为示例
                    // 'sendno' => 100,

                    // time_to_live: 表示离线消息保留时长(秒),
                    // 推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。
                    // 默认 86400 (1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到
                    // 这里设置为 1 仅作为示例
                    // 'time_to_live' => 1,

                    // apns_production: 表示APNs是否生产环境,
                    // True 表示推送生产环境,False 表示要推送开发环境;如果不指定则默认为推送开发环境
                    'apns_production' => APNS_PRODUCTION,

                    // big_push_duration: 表示定速推送时长(分钟),又名缓慢推送,把原本尽可能快的推送速度,降低下来,
                    // 给定的 n 分钟内,均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送
                    // 这里设置为 1 仅作为示例
                    // 'big_push_duration' => 1
                ))
                ->setSmsMessage(array(
                    'delay_time' => 60,
                    'signid' => 154,
                    'temp_id' => 1,
                    'temp_para' => array(
                        'code' => 357
                    ),
                    'active_filter' => false
                ))
                ->send();
        } catch (\JPush\Exceptions\JPushException $e) {
            // try something else here
            return $e;
        }
        return true;
    }
}

 

 

 

极光后台记录如下:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!