Я работаю над iOs и Android-приложением, созданным на основе react-native, и использую aws pinpoint для push-уведомления. мне удалось получить уведомления с помощью aws-ampify Библиотека для встроенного реагирования, и когда я тестирую уведомления с помощью инструмента тестирования aws-pinpoint, она работает без проблем. однако у меня возникла проблема с отправкой уведомлений с помощью php.
Я пробовал использовать эту документацию (https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-pinpoint-2016-12-01.html#sendmessages), а в Ios it дает следующую ошибку:
{
"errorMessage": "Invalid notification",
"channelType": "APNS",
"pushProviderStatusCode": "0",
"pushProviderError": "Notification is malformed"
}
Вот код PHP, который я пытаюсь
$settings=array(
'version' => '2016-12-01', // have tries 'latest' too
'region' => 'us-east-1',
'credentials' => [
'key' => 'XXXXXXXXX',
'secret' => 'XXXXXX',
]
);
$pin = new Aws\Pinpoint\PinpointClient($settings);
$msgios=array(
'ApplicationId' => 'XXXXXXXX',
'MessageRequest' => [
'Addresses' => [
'06fdf172694c5d6461b3d8a20308720674XXXXXXXXX' => [
'BodyOverride' => 'aaa',
'ChannelType' => 'APNS',
'RawContent' => 'bbb',
'Context' => ['ccc' => '222'],
'TitleOverride' => 'ddd',
],
],
'Context' => ['hello'=>'yes', 'value'=>'key'],
'MessageConfiguration' => [
'APNSMessage' => [
'Action' => 'OPEN_APP',
'Badge' => 2,
'Body' => 'Hello There',
'Category' => 'iOS',
'CollapseId' => 'Yes',
'Data' => ['age'=>13,'Name'=>"Saman"],
'MediaUrl' => null,
'PreferredAuthenticationMethod' => '',
'Priority' => '10',
'RawContent' => 'Hello',
'SilentPush' => true,
'Sound' => 'default',
'Substitutions' => [
'ages' => ['10', '13'],
],
'ThreadId' => '10',
'TimeToLive' => 10,
'Title' => 'There',
'Url' => null,
],
'DefaultMessage' => [
'Body' => 'Hello there',
'Substitutions' => [
'ages' => ['10', '13'],
],
],
'DefaultPushNotificationMessage' => [
'Action' => 'OPEN_APP',
'Body' => 'Hello',
'Data' => ['age'=>13,'Name'=>"Saman"],
'SilentPush' => true,
'Substitutions' => [
'ages' => ['10', '13'],
],
'Title' => 'Hello',
'Url' => null,
],
],
'TraceId' => '1024585',
],
);
$result = $pin->sendMessages($msgios);
Я получаю указанную выше ошибку от iOs, и когда я использую «GCM» и нажимаю на него, на устройство приходит уведомление (я вижу его в консоли), но не в правильном формате.
Уведомления iOS и Andoird отлично работают с приборной панелью AWS pinpoint:
Я думаю, что использую неправильный синтаксис или версию API. ценю вашу помощь.