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的主要内容,如果未能解决你的问题,请参考以下文章