Push通知ってブラウザ閉じても通知出来る様に出来るのか?

2024.11.04

Logging

おはようございます.Push通知ってブラウザ閉じても通知出来る様に出来るのか?答えは出来るのですが無料でその機能を実装できるのか.こたえはYesに近い?.有料のサービス機能push7を使用すればもっと簡単に可能です.

サービスワーカーとかいう機能を使えば良いみたいですね.知らないは一時の恥ですね.サービスワーカーとGCPやララベルの拡張Webpushなどを使えば出来そうですがまだ試していません.

因みにPusherサービスを使用して実装しました.当分、無料枠で対応可能な感じですね💁.

下記はリアルタイムPush通知の動作とソースコードの一部になります.

<?php
namespace App\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\Channel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class NotificationEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $title;
    public $message;
    public $userId;

    public function __construct($title, $message,$userId='')
    {
        $this->title = $title;
        $this->message = $message;
        $this->userId = $userId;
    }

    public function broadcastOn()
    {
        return new Channel('notifications.' . $this->userId);
    }

    public function broadcastAs()
    {
        return 'notification-event';
    }
}

明日へ続く

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

construct, GCP, gt, InteractsWithSockets, lt, Message, notification-event, notifications, public, return, SerializesModels, use IlluminateBroadcastingChannel, use IlluminateBroadcastingInteractsWithSockets, use IlluminateBroadcastingPrivateChannel, use IlluminateContractsBroadcastingShouldBroadcast, use IlluminateFoundationEventsDispatchable, use IlluminateQueueSerializesModels, userid, yes, ララベル,

npushに改善したい事はプシュ通知.追加した機能はこれ.

2024.10.30

Logging

おはようございます.npushに改善したい事はプシュ通知.本日追加した機能はこれです.使わなくなったスケジュールを定期的に削除する機能です.コード的には3行ほどのコードなんだけど、そこまで手が回らなかった.アクセス数が頻繁にあるサイトは定期的に機能追加とかしているのだけど、npushは全然駄目で運営が軌道に乗るまでかなり時間がかかりそうです.

<?php

namespace App\Jobs;

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Foundation\Queue\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Models\ListItem;
use App\Models\TelevisionSchedule;
use DateTime;

class delDataJob implements ShouldQueue
{
    use Queueable;

    /**
     * Create a new job instance.
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     */
    public function handle(): void
    {
        //
        $datetime = new DateTime();
        ListItem::where('created_at','<=',$datetime->format('Y-m-d H:i:s'))->delete();
        TelevisionSchedule::where('end_time','<=',$datetime->format('Y-m-d H:i:s'))->delete();
    }
}

そもそもNHKを見る人はデジタル世代に少なそうということはこのサービスを作った時点で分かっていたのだけど、それでも作ったのは単なる自分が必要だっただけなんですね.ともあれ、もう運用しているので何とか軌道に乗せたいなって思いますが道は険しいです.このままではサービス停止もあり得ることなのかも.

最後に技術的なお話.Laravel11からスケジュール設定を書く場所が変更になりました.下記の場所にスケジュールを登録しないと動かないようですね.Laravel9からLaravel10、11と引き継いで来た場合は旧の階層で大丈夫そうです.

routes/console.php
<?php

use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule;
use App\Jobs\delDataJob;

Schedule::job(new delDataJob())->dailyAt('10:10');

明日へ続く

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

$datetime, construct, format, job, ListItem, lt, npush, routes, Schedule, TelevisionSchedule, use IlluminateContractsQueueShouldQueue, use IlluminateFoundationBusDispatchable, use IlluminateFoundationInspiring, use IlluminateFoundationQueueQueueable, use IlluminateQueueInteractsWithQueue, use IlluminateQueueSerializesModels, use IlluminateSupportFacadesArtisan, use IlluminateSupportFacadesSchedule, void, where,