APP中集成极光推送的简单应用过程(后端PHP-LARAVEL)

在极光推送的开发者服务中创建自己需要接入的app应用,并记录下如下AppKey和Master Secret。

APP中集成极光推送的简单应用过程(后端PHP-LARAVEL)_第1张图片

 app端和服务器后端在极光官方文档中分别下载对应SDK:https://docs.jiguang.cn/jpush/resources/

客户端的集成步骤及实例在文档中有详细介绍,这里不一一搬运了,唯一值得注意的是APP端和服务器端保持对应统一的AppKey和Master Secret。主要看下后端根据需求定制推送过程及返回结果(以laravel为例)。

根据官方文档中一步步执行。

在项目中的 composer.json 文件中添加 jpush 依赖:

"require": {
    "jpush/jpush": "^3.5"
}

 执行 $ php composer.phar install$ composer install 进行安装后按理来说就可以使用了,中间出现几次安装失败小插曲,无非是环境不同、扩展没开等等冗杂问题,具体问题具体分析,这里就不一一赘述。

也尝试了官方十分不推荐的“直接下载源码安装”:

在laravel项目内的app文件夹中新建common文件夹,这个文件夹里我习惯放一些使用比较频繁的函数,利用composer设置自动加载,十分方便,所以下载好的极光推送安装包解压后我也顺手放这便于调用。

APP中集成极光推送的简单应用过程(后端PHP-LARAVEL)_第2张图片

解压后的SDK名字改简短一点,如上图中的1,新建一个类似2的Jpush.php文件,用于你业务逻辑所需要的一些方法封装成类,类似于推送SDK的入口。为便于在控制器中调用该SDK入口,可以先了解利用composer配置公共函数,配置好以后的文件中的方法函数可以不用类来实现,在控制器中真正达到全局调用的效果。

下方为Jpush.php中封装的一些基本方法:

1、推送一条简单的测试消息给APP

push()
         ->setPlatform('all')
         ->addAllAudience()
         ->setNotificationAlert("尝试推送的一条即时消息")
         ->send();
        
         var_dump($push);

        //获取定时任务列表,可看到已经定制成功的推送信息状态
         $get = $client->schedule()->getSchedules();
         var_dump($get);
    }
}

2、异常处理

push();
         $push->setPlatform('all');
         $push->addAllAudience();
         $push->setNotificationAlert('推送消息弹框提示信息');

         try {
             var_dump($push->send());
         } catch (\JPush\Exceptions\JPushException $e) {
             var_dump($e);
         }
        
 
        //获取定时任务列表,可看到已经定制成功的推送信息状态,可以不要下面两行,只用于查看已定制的任务
         $get = $client->schedule()->getSchedules();
         var_dump($get);
    }
}

3.创建一个触发一次的定时任务

push()
        ->setPlatform('all')
        ->addAllAudience()
        ->setNotificationAlert("这是一条消息推送提醒")
        ->build();
        
         //创建一个触发一次的定时任务
         $response = $client->schedule()->createSingleSchedule("触发一次的定时任务", $push, ["time" => "2019-02-27 15:30:00"]);

        var_dump("$response");
 
        //获取定时任务列表,可看到已经定制成功的推送信息状态,可以不要下面两行,只用于查看已定制的任务
         $get = $client->schedule()->getSchedules();
         var_dump($get);
    }

}

4、创建一个或者多个定时推送任务

push()
        ->setPlatform('all')
        ->addAllAudience()
        ->setNotificationAlert("这是一条消息推送提醒")
        ->build();
        
         //创建一个可以每天定时触发一次的定时任务
         $response1 = $client->schedule()->createPeriodicalSchedule("每天早上9点触发的定时任务", $push, [
             "start" => "2019-03-20 09:00:00",
             "end" => "2019-04-01 09:00:00",
             "time" => "09:00:00",
             "time_unit" => "DAY",
             "frequency"=>1
         ]);
         print_r($response1);
         //创建第二个可以每天定时触发一次的定时任务
         $response2 = $client->schedule()->createPeriodicalSchedule("每天晚上21触发的定时任务", $push, [
             "start" => "2019-03-19 21:00:00",
             "end" => "2019-04-01 21:00:00",
             "time" => "21:00:00",
             "time_unit" => "DAY",
             "frequency"=>1
         ]);
         print_r($response2);
 
        var_dump("$response");
 
        //获取定时任务列表,可看到已经定制成功的推送信息状态,可以不要下面两行,只用于查看已定制的任务
         $get = $client->schedule()->getSchedules();
         var_dump($get);
    }
 
}

附上第四种,创建一个或者多个定时推送任务的返回结果:

 
Array
(
    [body] => Array
        (
            [schedule_id] => 4944a472-49ef-11e9-8d3f-0021f6b7a802
            [name] => 每天早上9点触发的定时任务
        )
 
    [http_code] => 200
    [headers] => Array
        (
            [0] => HTTP/1.1 200 OK
            [Server] => nginx
            [Date] => Tue, 19 Mar 2019 02:32:48 GMT
            [Content-Type] => application/json
            [Transfer-Encoding] => chunked
            [Connection] => keep-alive
        )
 
)
Array
(
    [body] => Array
        (
            [schedule_id] => 49497470-49ef-11e9-a0c4-fa163e2198ad
            [name] => 每天晚上21触发的定时任务
        )
 
    [http_code] => 200
    [headers] => Array
        (
            [0] => HTTP/1.1 200 OK
            [Server] => nginx
            [Date] => Tue, 19 Mar 2019 02:32:48 GMT
            [Content-Type] => application/json
            [Transfer-Encoding] => chunked
            [Connection] => keep-alive
        )
 
)
array(3) {
  ["body"]=>
  array(4) {
    ["total_count"]=>
    int(2)
    ["total_pages"]=>
    int(1)
    ["page"]=>
    int(1)
    ["schedules"]=>
    array(2) {
      [0]=>
      array(6) {
        ["name"]=>
        string(37) "每天早上9点触发的定时任务"
        ["enabled"]=>
        bool(true)
        ["schedule_id"]=>
        string(36) "4944a472-49ef-11e9-8d3f-0021f6b7a802"
        ["trigger"]=>
        array(2) {
          ["single"]=>
          array(1) {
            ["time"]=>
            string(0) ""
          }
          ["periodical"]=>
          array(6) {
            ["end"]=>
            string(19) "2019-04-01 09:00:00"
            ["point"]=>
            NULL
            ["start"]=>
            string(19) "2019-03-20 09:00:00"
            ["frequency"]=>
            int(1)
            ["time_unit"]=>
            string(3) "day"
            ["time"]=>
            string(8) "09:00:00"
          }
        }
        ["msgtype"]=>
        int(0)
        ["push"]=>
        array(4) {
          ["platform"]=>
          string(3) "all"
          ["audience"]=>
          string(3) "all"
          ["options"]=>
          array(2) {
            ["sendno"]=>
            int(1867087675)
            ["apns_production"]=>
            bool(false)
          }
          ["notification"]=>
          array(1) {
            ["alert"]=>
            string(27) "这是一条消息推送提醒"
          }
        }
      }
      [1]=>
      array(6) {
        ["name"]=>
        string(35) "每天晚上21触发的定时任务"
        ["enabled"]=>
        bool(true)
        ["schedule_id"]=>
        string(36) "49497470-49ef-11e9-a0c4-fa163e2198ad"
        ["trigger"]=>
        array(2) {
          ["single"]=>
          array(1) {
            ["time"]=>
            string(0) ""
          }
          ["periodical"]=>
          array(6) {
            ["end"]=>
            string(19) "2019-04-01 21:00:00"
            ["point"]=>
            NULL
            ["start"]=>
            string(19) "2019-03-19 21:00:00"
            ["frequency"]=>
            int(1)
            ["time_unit"]=>
            string(3) "day"
            ["time"]=>
            string(8) "21:00:00"
          }
        }
        ["msgtype"]=>
        int(0)
        ["push"]=>
        array(4) {
          ["platform"]=>
          string(3) "all"
          ["audience"]=>
          string(3) "all"
          ["options"]=>
          array(2) {
            ["sendno"]=>
            int(1867087675)
            ["apns_production"]=>
            bool(false)
          }
          ["notification"]=>
          array(1) {
            ["alert"]=>
            string(27) "这是一条消息推送提醒"
          }
        }
      }
    }
  }
  ["http_code"]=>
  int(200)
  ["headers"]=>
  array(6) {
    [0]=>
    string(15) "HTTP/1.1 200 OK"
    ["Server"]=>
    string(5) "nginx"
    ["Date"]=>
    string(29) "Tue, 19 Mar 2019 02:32:48 GMT"
    ["Content-Type"]=>
    string(16) "application/json"
    ["Transfer-Encoding"]=>
    string(7) "chunked"
    ["Connection"]=>
    string(10) "keep-alive"
  }
}

 

你可能感兴趣的:(简单应用)