极光推送

This commit is contained in:
fthvgb1 2018-06-16 10:18:41 +08:00
parent 4c847f2668
commit 1a81f8baee
12 changed files with 184 additions and 7 deletions

View File

@ -54,3 +54,7 @@ JWT_SECRET=
# 单位分钟
JWT_TTL=60
JWT_REFRESH_TTL=20160
#极光推送
JPUSH_KEY=
JPUSH_SECRET=

View File

@ -35,7 +35,7 @@ class UsersController extends Controller
public function update(UserRequest $request)
{
$user = $this->user();
$attributes = $request->only(['name', 'email', 'introduction']);
$attributes = $request->only(['name', 'email', 'introduction', 'registration_id']);
if ($request->get('avatar_image_id')) {
$image = Image::find($request['avatar_image_id']);
$attributes['avatar'] = $image->path;

View File

@ -54,6 +54,7 @@ class UserRequest extends FormRequest
'verification_key' => '短信验证码 key',
'verification_code' => '短信验证码',
'introduction' => '个人简介',
'registration_id' => '设备id'
];
}

View File

@ -0,0 +1,48 @@
<?php
namespace App\Listeners;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\DatabaseNotification;
use JPush\Client;
class PushNotification implements ShouldQueue
{
protected $client;
/**
* Create the event listener.
* @param Client $client
* @return void
*/
public function __construct(Client $client)
{
$this->client = $client;
}
/**
* Handle the event.
*
* @param DatabaseNotification $notification
* @return void
*/
public function handle(DatabaseNotification $notification)
{
if (app()->environment('local')) {
return;
}
$user = $notification->notifiable;
if (!$user->registration_id) {
return;
}
// 推送消息
$this->client->push()
->setPlatform('all')
->addRegistrationId($user->registration_id)
->setNotificationAlert(strip_tags($notification->data['reply_content']))
->send();
}
}

View File

@ -39,7 +39,7 @@ class User extends Authenticatable implements JWTSubject
*/
protected $fillable = [
'name', 'phone', 'email', 'password', 'introduction', 'avatar ',
'weixin_openid', 'weixin_unionid',
'weixin_openid', 'weixin_unionid', 'registration_id'
];
/**

View File

@ -20,6 +20,9 @@ class EventServiceProvider extends ServiceProvider
// add your listeners (aka providers) here
'SocialiteProviders\Weixin\WeixinExtendSocialite@handle'
],
'eloquent.created: Illuminate\Notifications\DatabaseNotification' => [
'App\Listeners\PushNotification',
],
];
/**

View File

@ -0,0 +1,33 @@
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use JPush\Client;
class JpushServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton(Client::class, function ($app) {
return new Client(config('jpush.key'), config('jpush.secret'));
});
$this->app->alias(Client::class, 'jpush');
}
}

View File

@ -16,6 +16,7 @@
"guzzlehttp/guzzle": "~6.3",
"hieu-le/active": "~3.5",
"intervention/image": "^2.4",
"jpush/jpush": "^3.6",
"laravel/framework": "5.5.*",
"laravel/horizon": "~1.0",
"laravel/tinker": "~1.0",

49
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "32f207e4a0d2ec61b4710f12c6b34d6d",
"content-hash": "e838c10d6726e4e4ac83fcfec83bc9d7",
"packages": [
{
"name": "cakephp/chronos",
@ -1457,8 +1457,51 @@
"time": "2015-04-20T18:58:01+00:00"
},
{
"name": "jpush/jpush",
"version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/jpush/jpush-api-php-client.git",
"reference": "a2250612a33ced6c3e565eb9807089b693111154"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jpush/jpush-api-php-client/zipball/a2250612a33ced6c3e565eb9807089b693111154",
"reference": "a2250612a33ced6c3e565eb9807089b693111154",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "*"
},
"type": "library",
"autoload": {
"psr-4": {
"JPush\\": "src/JPush/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "JPush",
"email": "support@jpush.cn",
"homepage": "https://www.jpush.cn/",
"role": "Developer"
}
],
"description": "JPush API PHP Client",
"homepage": "https://github.com/jpush/jpush-api-php-client",
"time": "2018-05-30T02:28:58+00:00"
},
{
"name": "laravel/framework",
"version": "v5.5.40",
"version": "v5.5.40",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
@ -1588,7 +1631,7 @@
"framework",
"laravel"
],
"time": "2018-03-30T13:29:30+00:00"
"time": "2018-03-30T13:29:30+00:00"
},
{
"name": "laravel/horizon",

View File

@ -178,7 +178,7 @@ return [
App\Providers\RouteServiceProvider::class,
App\Providers\EasySmsServiceProvider::class,
App\Providers\JpushServiceProvider::class
],
/*

12
config/jpush.php Normal file
View File

@ -0,0 +1,12 @@
<?php
/**
* Created by PhpStorm.
* User: xing
* Date: 2018/6/16
* Time: 9:51
*/
return [
'key' => env('JPUSH_KEY'),
'secret' => env('JPUSH_SECRET'),
];

View File

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddRegistrationIdToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('registration_id')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('registration_id');
});
}
}