首页 > 解决方案 > 登录数据库后如何存储网络推送通知设置

问题描述

我想在浏览器上发送网络推送通知。我使用教程发送通知。这工作正常并显示细节。

在此处输入图像描述

{
"endpoint":"https://fcm.googleapis.com/fcm/send/ftB1OYn5bJY:APA91bGNcquGDcUXr29JiVV5Zos4Vi7FzmZ_wJQMITEXt8FlVBRBtgrPdLnPR6GALtnCOe9RNPP1cmC_bkv9D1BE1o6_-0cMXQsodpPoRCeOP5EDt6EwqK0ys36MbCi3HNTWf7ZcItVi",
"expirationTime":null,
"keys":{"p256dh":"BLJQqNovnlJ28d5xteX8whwdby6l0BYLvC_iyNtY2nO7YXQSI-EOvdOs1LXy8F_EuH2MZi0FU_HoCO-5GRQYYVQ",
"auth":"tDcEgiy5M5tJ3_vXuuQ9uw"}
}

但我想与我的 Laravel API 集成。

用户登录后,我想将 、 和 保存endpointpublic key数据库auth 中。

登录控制器

public function authenticate(Request $request)
{
    $credentials = $request->only('username', 'password');
    // return $credentials;

    $response = array(
        'status' => 'Failed',
        'msg' => '',
        'is_success' => false,
        'data' => ''
    );
    try {
        if (!$token = JWTAuth::attempt($credentials)) {

            $response["msg"] = "Wrong Username or Password";
            $response["status"] = "Failed";
            $response["is_success"] = false;
        } else {
            if (Auth::user()->is_active == 0) {
                $response["msg"] = "Your account has not been activated";
                $response["status"] = "Failed";
                $response["is_success"] = false;
            } else {

                $data = array();
                $user = User::find(Auth::user()->id);
                $data['id'] = $user->id;
                $data['fname'] = $user->fname;
                $data['lname'] = $user->lname;
                $data['email'] = $user->email;
                $data['username'] = $user->username;
                $response["msg"] = "Login Successfully";
                $response["status"] = "Success";
                $response["data"] = compact('token');
                $response["user"] = Auth::user();    
            }
        }
    } catch (\Exception $th) {
        $response["msg"] = $th->getMessage();;
        $response["status"] = "Failed";
        $response["is_success"] = false;
    }

    return $response;
}

标签: laravel

解决方案


我认为解决此问题的最佳方法是为该数据创建另一个模型,即用户模型和推送通知数据模型之间的一对一关系。在这个新模型上为 CRUD 操作创建一个控制器,然后从前端再进行一次 http 调用来存储数据。


推荐阅读