отправка уведомления OneSignal с QML - PullRequest
2 голосов
/ 09 мая 2019

Я интегрирую OneSignal в мое приложение, созданное с помощью Felgo, при создании приложения для тестирования я могу вручную отправлять уведомления с панели управления OneSignal, но, очевидно, я хочу, чтобы они были автоматическими, когда событие происходит вapp.

Я действительно изо всех сил пытаюсь понять, как заставить это работать, я прочитал оба:

, а я думаю, объединяя их, было бы, как я поступил бы?Что-то вроде:

AppButton {
    id: button
    onClicked: {
        //other onClicked actions,
        HttpRequest
        .post("https://onesignal.com/api/v1/notifications")
        .set('Content-Type', 'application/json')
        .send({ title: "post title", body: "post body" })
        .then(function(res) {
            console.log(res.status);
            console.log(JSON.stringify(res.header, null, 4));
            console.log(JSON.stringify(res.body, null, 4));
        })
        .catch(function(err) {
            console.log(err.message)
            console.log(err.response)
        });
    }
}

Но как же я отправлюсь на конкретный tags для целевых уведомлений?

В ссылке Felgo OneSignal выше они показывают, чтоЯ могу протестировать push-уведомления с помощью curl следующим образом:

curl --include \
    --request POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Basic <ONESIGNAL-REST-API-KEY>" \
    --data-binary '{
     "app_id": "<ONESIGNAL-APP-ID>",
     "contents": { "en": "Message" },
     "tags": [{"key": "userId", "relation": "=", "value": "1"}]
    }' \
    https://onesignal.com/api/v1/notifications

Но кроме целей тестирования, как мне назначить определенные теги и вызвать уведомление о нажатии кнопки (или другом событии) внутри моегоприложение?

Я понимаю, что вся информация, которая должна мне понадобиться для реализации уведомлений, есть, но я не могу начать понимать это!: (

Любая помощь будет очень полезна, так как даже при чтении документации я испытываю трудности.

1 Ответ

1 голос
/ 15 мая 2019

У меня это работает, используя код ниже, то, что показано, является конечным результатом сигнала, отправляемого, когда AppButton нажата в другом месте моего приложения.

У меня нет собственного веб-сервиса для размещения моих уведомлений, но по соображениям безопасности мой ключ REST не должен быть в моем коде.

Для борьбы с этим я добавил свой API-ключ One Signal Rest в ветку в моей базе данных Firebase (которую я также использую в своем приложении), к которой могут обращаться только авторизованные пользователи, затем она загружается в экземпляр запрос сделан и изменен на другую строку после.

property var osKey

firebaseDb.getValue("keys/OSkey", {
                         }, function(success, key, value) {
                             if(success){
                             osKey = value;
                             HttpRequest
                               .post("https://onesignal.com/api/v1/notifications")
                               .set('Content-Type', 'application/json')
                               .set("Authorization", "Basic " + osKey)
                               .send({
                                   "app_id": "<MY_APP_ID>",
                                   "contents": { "en": "MESSAGE" },
                                   "tags":  [
                                   // the specific tags I want to send too
                                       {"key": "groupAdmin", "relation": "=", "value": "1"},
                                       {"key": "group", "relation": "=", "value": groupName}
                                   ]
                               })
                               .then(function(res) {
                                  console.log(res.status);
                                  console.log(JSON.stringify(res.header, null, 4));
                                  console.log(JSON.stringify(res.body, null, 4));
                               })
                               .catch(function(err) {
                                  console.log(err.message)
                                  console.log(err.response)
                               });
                            }
                         })
            osKey = "Nothing to see here"

Я понимаю, что из-за ценных бумаг это все еще может быть не самым безопасным, и опять же - если кто-нибудь скажет мне, как улучшить это, это будет огромная помощь!

Спасибо

...