Отправка push-уведомления AWS Pinpoint с помощью AWS PHP SDK выдает ошибку - уведомление имеет неправильный формат

Я работаю над 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:

screen

Я думаю, что использую неправильный синтаксис или версию API. ценю вашу помощь.


person nicole ino    schedule 19.07.2019    source источник