Я пытаюсь отправить тихие удаленные уведомления sh pu с сервера PHP на устройство iOS. Настройте, используя информацию на https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app
Когда я отправляю сообщение, я вижу, что оно получено устройством iOS (iOS версия 12.4.7). Но я также вижу ошибку «Уведомление не имеет видимого пользователем содержимого». Теперь это тихое фоновое уведомление с установленным заголовком apns-push-type:background
, я бы подумал, что нет необходимости в видимом пользователем контенте?
[xxxxx] Not delivering user visible push notification B026-EC8D [ error=Error Domain=UNErrorDomain Code=1401 "Notification has no user visible content" UserInfo={NSLocalizedDescription=Notification has no user visible content} ]
Уведомления работают, когда приложение находится в фоновом режиме, но не когда приложение закрыто.
Я попытался отправить обычное нефоновое предупреждение, и оно отлично работает, даже если приложение закрыто.
Ниже приведен простой класс / функция, которые я создал на тестирование
class SimpleApnsService
{
public static function push($deviceToken, $certificate, $topic)
{
$payload = '{
"appdata": "command:refresh",
"aps": {
"content-available": 1
}
}';
$url = "https://api.development.push.apple.com/3/device/$deviceToken";
$headers = [
"apns-topic:$topic",
"apns-push-type:background",
"apns-priority:5",
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// there is not password set on the certificate
curl_setopt($ch, CURLOPT_SSLCERT, $certificate);
// return true
$response = curl_exec($ch); => return true
// returns 200
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
}
}