Nativescript - Onesignal остальные Api - PullRequest
0 голосов
/ 12 марта 2019

У меня есть push-уведомления в моем приложении с onesignal sdk, но я с трудом понимаю, как я могу отправить с большим значком, я имею в виду тот, который остается слева, когда пользователь получает push (вместо показаБелл) ... я знаю, что значок должен быть прозрачным и иметь 256px x 256px.Я отправляю push, используя остальные API, но я не знаю, в чем проблема, потому что кажется, что ничего не работает, вот мой код:

public function sendMessage($messagePush){
        $subtitle=["en" => $messagePush['message']];
        $content      = array(
            "en" => $messagePush['contentJson']['tipoImovel'],
            "large_icon" => public_path('img/icon.png')
        );
        $hashes_array = array();
        array_push($hashes_array, array(
            "id" => "id1",
            "text" => "Ver"
        ));
        $fields = array(
            'app_id' => "myappid",
            'included_segments' => array(
                'All'
            ),
            'data' => array(
                "imovel" => $messagePush['contentJson']
            ),
            'headings'=> $subtitle,
            'contents' => $content,
            'buttons' => $hashes_array
        );

        $fields = json_encode($fields);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json; charset=utf-8',
            'Authorization: my autorization'
        ));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

        $resp = curl_exec($ch);
        curl_close($ch);

        return $resp;
    }

Я могу получить push, но значокникогда не появляется, и есть еще одна проблема ... push-сообщение всегда появляется в верхнем трее вместо всплывающего «вида», для этого способа ниже также мой код, который находится в моем app.js:

if (application.android) {
    application.on(application.launchEvent, (args) => {
        try {
            TnsOneSignal.startInit(application.android.context).setNotificationOpenedHandler(new TnsOneSignal.NotificationOpenedHandler({
                // notificationOpened: function (result: com.onesignal.OSNotificationOpenResult) {
                notificationOpened: function (result) {
                    const imovelAndroid =  JSON.parse(result.stringify()).notification.payload.additionalData;
                    handleOpenURL(imovelAndroid);
                }
            })).init();
            TnsOneSignal.setInFocusDisplaying(TnsOneSignal.OSInFocusDisplayOption.Notification);
            TnsOneSignal.startInit(application.android.context).init();
        }
        catch (error) {
            console.error('error', error);
        }
    });
}

Если я удаляю TnsOneSignal.setInFocusDisplaying (TnsOneSignal.OSInFocusDisplayOption.Notification); появляется всплывающий стиль, но кнопки не переходят в мою handleOpenURL функцию ...но если я позволю ему остаться, он будет перемещаться, но толчок всегда будет на панели задач.

Какие-нибудь советы?Спасибо за ваше время.Привет

1 Ответ

1 голос
/ 13 марта 2019

Вам придется удалить TnsOneSignal.setInFocusDisplaying(TnsOneSignal.OSInFocusDisplayOption.Notification);, так как это приведет к тому, что уведомление будет первым.Значение по умолчанию InAppAlert уже.

Вы сбрасывали setNotificationOpenedHandler при втором вызове на startInit.Так что, если вы удалите второе утверждение startInit, у вас все получится.

...