sevealex / laravel-fcm
Laravel 包使用 Firebase 发送通知
README
简介
Laravel FCM 是一个易于使用的包,可用于与 Laravel 和 Lumen 配合使用,通过 Firebase Cloud Messaging (FCM) 发送推送通知。
目前它仅支持 HTTP 协议来
- 向一个或多个设备发送下行消息
- 创建迁移以保存用户令牌
- 添加函数助手以获取或创建用户令牌
安装
要在您的项目中获取 Laravel FCM 的最新版本,请在 "composer" 中要求它
$ composer require prgayman/laravel-fcm
Laravel
直接在您的应用程序配置文件 config/app.php 中注册提供者 config/app.php
Laravel >= 5.5 提供了包自动发现,归功于 rasmuscnielsen 和 luiztessadri,他们帮助实现了 Laravel FCM 中的此功能,因此不再需要注册提供者和外观。
'providers' => [ Prgayman\Fcm\FcmServiceProvider::class, ]
在相同的文件中添加外观别名
'aliases' => [ 'FCM' => Prgayman\Fcm\Facades\Fcm::class, ]
使用以下命令发布包配置文件
$ php artisan vendor:publish --provider="Prgayman\Fcm\FcmServiceProvider"
使用以下命令迁移 fcm_tokens
$ php artisan migrate
Lumen
在您的 bootstrap/app.php 应用程序启动文件中注册提供者
在文件底部的 "注册服务提供者" 部分中添加以下行。
$app->register(Prgayman\Fcm\FcmServiceProvider::class);
对于外观,在 "创建应用程序" 部分(.)中添加以下行。FCMGroup 外观仅当您想在应用程序中使用分组消息时才是必要的。
class_alias(\Prgayman\Fcm\Facades\Fcm::class, 'PFCM');
手动将配置文件 fcm.php 从目录 /vendor/prgayman/laravel-fcm/Config 复制到目录 /config(您可能需要创建此目录)。
包配置
在您的 .env 文件中,添加 Firebase Cloud Messaging 的服务器密钥和密钥
FIREBASE_SERVER_KEY=my_server_key
要获取这些密钥,您必须在 Firebase Cloud Messaging 控制台 上创建一个新应用程序。
在 Firebase 上创建您的应用程序后,您可以在 项目设置 -> 云消息 中找到密钥。
文档
有关详细的安装和使用说明,请参阅 文档。
有效负载构建器
基本用法
使用 Laravel FCM 可以发送两种类型的消息
- 通知消息,有时被称为 "显示消息"
- 数据消息,由客户端应用程序处理
首先,将 Prgayman\Fcm\Traits\HasFcm 特性添加到您的 User 模型中
use Illuminate\Foundation\Auth\User as Authenticatable; use Prgayman\Fcm\Traits\HasFcm; // Add this line class User extends Authenticatable { use HasFcm; // Add this line } $user = User::find(1); /** * Get all fcm tokens this user * @param string $locale (optional) * * @return array */ $user->getFcmTokens(); /** * Get ios fcm tokens this user * @param string $locale (optional) * * @return array */ $user->getFcmIosTokens(); /** * Get android fcm tokens this user * @param string $locale (optional) * * @return array */ $user->getAndroidTokens(); /** * Get web fcm tokens this user * @param string $locale (optional) * * @return array */ $user->getWebTokens(); /** * Create Or Update user fcm Token this user * @param string $token * @param string $platform (optional) * @param string $locale (optional) * * @return Prgayman\Fcm\Models\FcmToken */ $fcmToken = $user->fcmCreateOrUpdate($token, "android", app()->getLocale()));
Prgayman\Fcm\Models\FcmToken 模型使用
use Prgayman\Fcm\Models\FcmToken; $user = User::find(1); /** * Get all fcm tokens * @param string $locale (optional) * * @return array */ $fcmToken = FcmToken::getTokens("en"); /** * Get Platform Ios Tokens * @param string $locale (optional) * * @return array */ $fcmToken = FcmToken::getIosTokens(); /** * Get Platform android Tokens * @param string $locale (optional) * * @return array */ $fcmToken = FcmToken::getAndroidTokens(); /** * Get Platform web Tokens * @param string $locale (optional) * * @return array */ $fcmToken = FcmToken::getWebTokens(); /** * Create Or Update Token * @param string $token * @param Illuminate\Database\Eloquent\Model $model_type (optional) * @param int $model_id (optional) * @param string $platform (optional) * @param string $locale (optional) * * @return Prgayman\Fcm\Models\FcmToken */ $fcmToken = FcmToken::createOrUpdate($token, get_class($user), $user->id );
下行消息
下行消息是一个通知消息、数据消息或两者的组合,您使用其 registration_Ids 将其发送到目标设备或多个目标设备。
以下示例需要以下使用语句
use Prgayman\Fcm\Support\Payload\Data\DataBuilder; use Prgayman\Fcm\Support\Payload\Notification\NotificationBuilder; use Prgayman\Fcm\Support\Payload\Options\OptionsBuilder; use PFCM;
向设备发送下行消息
// Create Notification Builder $notifyBuilder = new NotificationBuilder; $notifyBuilder->setTitle("Notification Title"); $notifyBuilder->setBody("Notification Body"); $notifyBuilder->ios->setSubtitle("Sub title"); $notifyBuilder->setImage("image_url"); $notifyBuild = $notifyBuilder->build(); // Create Data Builder $dataBuilder = new DataBuilder; $dataBuilder->setData(["type" => "VIEW_PRODUCT"]); $dataBuilder->addData(["type_id" => 1]); $dataBuild = $dataBuilder->build(); // Create Options Builder $optionsBuilder = new OptionsBuilder; $optionsBuilder->setPriority("high"); // [normal|high] $optionsBuilder->setContentAvailable(true); $optionsBuild = $optionsBuilder->build(); // @var array|string $tokens =[]; // Send Notification $fcm = Fcm::sendNotification($tokens,$notifyBuild,$optionsBuild); // $optionsBuild (optional) // Send Notification With Data $fcm = Fcm::sendNotificationWithData($tokens,$notifyBuild,$dataBuild,$optionsBuild); // $optionsBuild (optional) // Send Data $fcm = Fcm::sendData($tokens,$dataBuild,$optionsBuild); // $optionsBuild (optional) // return in number success send notification $numberSuccess = $fcm->numberSuccess(); // return in number failure send notification $numberFailure = $fcm->numberFailure(); // return in number modification send notification $numberModification = $fcm->numberModification(); // return Array - you must remove all this tokens in your database $tokensToDelete = $fcm->tokensToDelete(); // return Array (key : oldToken, value : new token - you must change the token in your database) $tokensToModify = $fcm->tokensToModify(); // return Array - you should try to resend the message to the tokens in the array $tokensToRetry= $fcm->tokensToRetry(); // return Array (key:token, value:error) - in production you should remove from your database the tokens $tokensWithError = $fcm->tokensWithError();
许可证
此库是开源软件,根据 MIT 许可证 许可。
此文档的一些内容来自官方文档。您可以在 Firebase Cloud Messaging 网站 上找到完整的文档。