web-dev-qa-db-ja.com

LaravelからのFirebaseプッシュ通知の送信

プッシュ通知にAPIとGoogle Firebaseのlaravelを使用してiOSアプリケーションを書いています。firebaseクラウドメッセージングを使用してプッシュ通知を送信すると、デバイスに送信されます。使用してプッシュ通知を送信するとlaravel、それは影響しません。laravelからプッシュ通知を送信するための私のスクリプトは次のとおりです:

function sendNotification(Request $request)
{
    $friendToken = [];
    $usernames = $request->all()['friend_usernames'];
    $dialog_id = $request->all()['dialog_id'];
    foreach ($usernames as $username) {
        $friendToken[] = DB::table('users')->where('user_name', $username)
            ->get()->pluck('device_token')[0];
    }

    $url = 'https://fcm.googleapis.com/fcm/send';
    foreach ($friendToken as $tok) {
        $fields = array(
            'to' => $tok,
            'data' => $message = array(
                "message" => $request->all()['message'],
                "dialog_id" => $dialog_id
            )
        );
        $headers = array(
            'Authorization: key=*mykey*',
            'Content-type: Application/json'
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
        curl_exec($ch);
        curl_close($ch);
    }

    $res = ['error' => null, 'result' => "friends invited"];

    return $res;
}

成功した結果を返しますが、通知はiOSデバイスに送信されません。

PS:Androidデバイスで正常に動作します。

6
Levan Karanadze

いくつかの調査の後、私は私の質問に対する解決策を見つけました。 iOSプラットフォームで機能するためには、フィールドに通知を追加する必要があります。

$notification = array('title' =>"" , 'text' => $request->all()['message']);
$fields = array(
    'to' => $tok,
    'data' => $message = array(
        "message" => $request->all()['message'],
        "dialog_id" => $dialog_id
    ),
    'notification' => $notification
);
2
Levan Karanadze