Я пишу приложение для iOS, используя laravel для API и google firebase для push-уведомлений. Когда я отправляю push-уведомление с помощью облачных сообщений Firebase, оно приходит на мое устройство. Когда я отправляю push-уведомления с помощью laravel, это не влияет. Вот мой скрипт для отправки push-уведомлений от 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.
Я сохраняю fcmTokens в базе данных.
Можете ли вы сказать мне, как и где хранить json-файл учетных данных firebase в Laravel?





После некоторых исследований я нашел решение моего вопроса. Для работы на платформе 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
);
Просто хочу знать, как вы отправляете полученный токен в свою базу данных в laravel
просто намек. вы можете использовать $request->only('message'), чтобы получить сообщение из запроса вместо $request->all()['message']. :)
Вы уверены, что получаете токены ios с устройств?