Firebase 云消息传递 - PHP Rest API 不适用于 iOS

Posted

技术标签:

【中文标题】Firebase 云消息传递 - PHP Rest API 不适用于 iOS【英文标题】:Firebase Cloud Messaging - PHP Rest API not working for iOS 【发布时间】:2018-05-30 13:14:54 【问题描述】:

我正在使用下面给出的 php 代码通过 Firebase Cloud Messaging 发送带有自定义负载的通知。它适用于 android,但不适用于 ios

但是,我能够接收从 firebase 云消息传递控制台发送的通知。请多多指教。

public function send_notification($registatoin_ids, $message, $title, $sound, 
$purpose) 


    // Set POST variables
    $url = 'https://fcm.googleapis.com/fcm/send';

    $fields = array(
        'registration_ids' => $registatoin_ids,
        'data' => array(
                        "for" => $purpose,
                        "id" => strtotime("now"),
                        "message" => $message,
                        "title" => $title,
                        "sound" => $sound,
                         "vibrate" => 1,
                        "date" => date("D d, M Y h:i A"),
                        "priority"=>'high',
                        "content_available"=>false
                        ),
        'time_to_live' => 600,
    );

    $headers = array(
        'Authorization: key=' . FCM_API_KEY,
        'Content-Type: application/json'
    );
    // Open connection
    $ch = curl_init();

    // Set the url, number of POST vars, POST data
    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Disabling SSL Certificate support temporarly
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

    // Execute post
    $result = curl_exec($ch);
    if ($result === FALSE) 
        die('Curl failed: ' . curl_error($ch));
    

    // Close connection
    curl_close($ch);
    return $result;

【问题讨论】:

当您说“它适用于 Android,但不适用于 iOS。”您是指从后台唤醒应用程序吗? 如果您已经尝试发送带有notification 标签的iOS 设备消息,那么您的问题可能是您如何处理AppDelegate 文件中的消息。编辑您的问题并添加您为 iOS 尝试过的消息结构,并添加您在 AppDelegate 中使用的代码来处理 iOS 中的消息。 【参考方案1】:

Android 和 iOS 处理推送通知的方式不同。虽然 Android 只会在仅提供 data 标签时从后台唤醒,但 iOS 设备需要 notification 标签来处理应用在后台时收到的通知。

【讨论】:

我也尝试了通知标签,带有标题和消息键,但仍然无法收到通知。 @MudassirShah :: 编辑您的问题并添加您在 iOS 上尝试过的消息结构,并添加您在 AppDelegate 中使用的代码来处理 iOS 中的消息。

以上是关于Firebase 云消息传递 - PHP Rest API 不适用于 iOS的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 云消息传递 php 脚本返回无效注册

Firebase 云消息传递都有哪些参数可用?

Firebase 云消息传递令牌和服务器密钥有啥区别?

Firebase 云消息传递重复通知

Firebase 云消息传递消息日志

Firebase 云消息传递 - 有多个主题 - 没有消息重复