Laravel中的FCM配置问题推送通知Android和iO

时间:2019-12-23 02:23:26

标签: android ios laravel firebase-cloud-messaging

我在项目中遇到了FCM问题。

这是我在.env中的配置FCM

FCM_SERVER_KEY_ANDRO=thisKeyForAndroid
FCM_SERVER_KEY_IOS=thisKeyForIOS
FCM_SENDER_ID=senderId

这是配置fcm.php

<?php

return [
    'driver' => env('FCM_PROTOCOL', 'http'),
    'log_enabled' => false,

    'http' => [
        'server_key' => env('FCM_SERVER_KEY_ANDRO'), //the problem is here
        'sender_id' => env('FCM_SENDER_ID'),
        'server_send_url' => 'https://fcm.googleapis.com/fcm/send',
        'server_group_url' => 'https://android.googleapis.com/gcm/notification',
        'timeout' => 30.0, // in second
    ],
];

当我将FCM_SERVER_KEY_ANDRO用于server_key时遇到问题,在IOS中推送notif不起作用。但是,当我将FCM_SERVER_KEY_IOS用于server_key时,请在运行中的IOS中推送notif,但在Android中不推送。 我无法在Android键盘或iOS键盘的http上添加新参数。

我希望FCM_SERVER_KEY_ANDRO和FCM_SERVER_KEY_IOS在fcm.php上同时运行,但我不知道如何同时运行两者?

对不起,我的语法不好

1 个答案:

答案 0 :(得分:1)

您可以在Android上使用config(['fcm.http.server_key' => env('FCM_SERVER_KEY_ANDROID')]);,在iOS上使用config(['fcm.http.server_key' => env('FCM_SERVER_KEY_ANDROID')]);,但是您需要将函数分开才能使其正常工作。您可以将此代码放在$downstreamResponse = FCM::sendTo($token, $option, $notification, $data);

之前

这里是示例:

public function ios($data, $notifications, $token)
{
    config(['fcm.http.server_key' => env('FCM_SERVER_KEY_IOS')]);
    ......
    ......
    $downstreamResponse = FCM::sendTo($token, $option, $notification, $data);
    return response()->default(200, 'Sent', $downstreamResponse);
}

public function android($data, $notifications, $token)
{
    config(['fcm.http.server_key' => env('FCM_SERVER_KEY_ANDROID')]);
    ......
    ......
    $downstreamResponse = FCM::sendTo($token, $option, $notification, $data);
    return response()->default(200, 'Sent', $downstreamResponse);
}