YII2.0集成极光推送实现IOS的PUSH功能

极光组推和个推可以通过极光返回的tag标签、alias别名、registionID进行推送。

群推直接通过->setAudience(M\all)进行推送,推送保存一条记录到本地数据库即可。


附极光推送的PHP版本SDK下载网址:http://docs.jpush.io/server/php_sdk/

1、解压出来的verdor目录改名,如jpush放到YII的vendor目录。

2、index.php入口文件加载,如图:

YII2.0集成极光推送实现IOS的PUSH功能

3、模型代码代码如下:

<?php
namespace tradingAPP\modelsV3;
use Yii;
use JPush\Model as M;
use JPush\JPushClient;
use JPush\Exception\APIConnectionException;
use JPush\Exception\APIRequestException;
/**
 * ios极光推送模型
 * see https://www.jpush.cn/
 * @author lg
 *
 */
class Jpush extends \yii\db\ActiveRecord {
/**
 * 使用极光的数据群推
 * @param unknown $info
 * @return boolean
 */
public static function pushAll($info) {
$app_key = Yii::$app->params ['Jpush'] ['app_key'];
$master_secret = Yii::$app->params ['Jpush'] ['master_secret'];
$client = new JPushClient ( $app_key, $master_secret );
$result = $client->push ()->setPlatform ( M\Platform ( 'ios' ) )->setAudience ( M\all )->setNotification ( M\notification ( M\ios ( "{$info['title']}", "happy", "+1", true, array (
"buyid" => $info ['buyid'],
"url" => $info ['url'],
"id" => $info['id']//供IOS定位到详细页
), "Ios8 Category" ) ) )->setOptions ( M\options ( null, 86400, null, true ) )->send ();
return $result;
}
public static function pushOne($registerationID,$username, $info) {
$model = new PushAuto ();
$model->attributes = array (
'PhoneType' => self::$phoneType,
'buyid' => $info ['buyid'],
'type' => $info ['type'],
'thumb' => $info ['thumb'],
'audience' => $info ['audience'],
'UUID' => $registerationID,
'username' => $username,
'title' => $info ['title'],
'message' => $info ['message'],
'totime' => $info ['totime'],
'url' => $info ['url']
);
$saveInfo = $model->saveInfo ();
$saveId = $saveInfo ['id'];
$info['id'] = $saveInfo ['id'];
$regIdArr = array ($registerationID);
$result = self::doPush ( $regIdArr, $info );
return $result;
}
/**
 * 消息推送入口
 * 注:ios 通知栏只显示标题,需要推内容,请在M\ios ( "{$title}",后添加即可
 * 开发环境setOptions ( M\options ( null, 86400, null, false ) )
 * 生产环境setOptions ( M\options ( null, 86400, null, true ) )
 * @param array $regIdArr
 * @param array $info
 * @return boolean
 */
public static function doPush($regIdArr, $info) {
if (empty ( $regIdArr ) || empty ( $info )) {
return false;
}
$app_key = Yii::$app->params ['Jpush'] ['app_key'];
$master_secret = Yii::$app->params ['Jpush'] ['master_secret'];
$client = new JPushClient ( $app_key, $master_secret );
try {
$result = $client->push ()->setPlatform ( M\Platform ( 'ios' ) )->setAudience ( M\audience ( M\registration_id ( $regIdArr ) ) )->setNotification ( M\notification ( M\ios ( "{$info['title']}", "happy", "+1", true, array (
"buyid" => intval ( $info ['buyid'] ),
"url" => $info ['url'],
"id" => $info['id'],
), "Ios8 Category" ) ) )->setOptions ( M\options ( null, 86400, null, true ) )->send ();
return true;
} catch ( APIRequestException $e ) {
} catch ( APIConnectionException $e ) {
}
}
}

特别注释:

开发环境setOptions ( M\options ( null, 86400, null, false ) )下的推送

生产环境setOptions ( M\options ( null, 86400, null, true ) )下的推送


需要打印推送的效果,加参数->printJSON (),如:


控制器代码如下:

<?php
namespace tradingAPP\controllers;
use tradingAPP\modelsV3\Jpush;
class TestController extends \tradingAPP\components\Controller {
public function actionPushIos(){
$uuid = '0415835c25550';
$info = [
'title' => 'IOS推送测试'.mt_rand(1, 10000),
'message' => 'IOS推送测试IOS推送测试IOS推送测试IOS推送测试IOS推送测试',
'url' => 'http://m.ezhaojiaju.com/',
'thumb' => 'http://m.ezhaojiaju.com/images/sliderImg/slider-v3-1.png',
'type' => 1,
'UUID' => '27b0c8429bf509a3bb097fcac195b8ec308b6941f55f9a72ea3eec628ba15290',
'username' => 'JR_13442',
'audience' => 'single',
'buyid' => 0,
'PhoneType' => 2,
'totime' => ''
];
$res = Jpush::pushOne($uuid,'JR_13442', $info);
var_dump($res);
}
}

浏览器访问:

http://127.0.0.1/test/push-ios.html

即可以收到个推,群推访问模型pushAll()方法即可。


你可能感兴趣的:(YII2.0集成极光推送实现IOS的PUSH功能)