PushNotifications: Allow adding custom data to push notifications
parent
b4aeeefa48
commit
7d966c6293
|
|
@ -17,6 +17,8 @@ for iOS too. On Ubuntu, the UBPorts push services are used.
|
|||
|
||||
## More
|
||||
|
||||
### Setup
|
||||
|
||||
During setup, the token, the push service system and a client id needs to be provided. The token is normally
|
||||
obtained by the operating system. The push service should be selected from FB-GCM, FB-APNs or UBPorts. The client id
|
||||
must a unique per client and as persistent as possible.
|
||||
|
|
@ -29,3 +31,28 @@ when setting up a push notification thing. Normally, push tokens expire after a
|
|||
the user clears app data, when the operating system decides to cycle tokens etc). In this case, the client
|
||||
app should reconfigure its own push notification thing, updating the token with the new one. The client ID
|
||||
parameter schould be used to find the appropriate thing to reconfigure.
|
||||
|
||||
|
||||
### Extra data
|
||||
When sending a push notification, additional data can be passed which will delivered to the client (e.g. nymea:app).
|
||||
|
||||
nymea:app currently supports the following extra data:
|
||||
|
||||
* open=view: Open a particular view in the app. This can be a main view or a thing id.
|
||||
* execute=action&thingId=<thingId>&actionParams=<params json>
|
||||
|
||||
Examples:
|
||||
|
||||
Open the Dashboard view:
|
||||
|
||||
open=dashboard
|
||||
|
||||
Open a particular thing by its ID:
|
||||
|
||||
open=5634307c-8569-4365-a78a-45e7e97966cb
|
||||
|
||||
Turn on a light:
|
||||
|
||||
execute=power&thingId=5634307c-8569-4365-a78a-45e7e97966cb&actionParams="{\"power\":true}"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -119,14 +119,23 @@ void IntegrationPluginPushNotifications::executeAction(ThingActionInfo *info)
|
|||
|
||||
QString token = thing->paramValue(pushNotificationsThingTokenParamTypeId).toString();
|
||||
QString pushService = thing->paramValue(pushNotificationsThingServiceParamTypeId).toString();
|
||||
|
||||
QString title = action.param(pushNotificationsNotifyActionTitleParamTypeId).value().toString();
|
||||
QString body = action.param(pushNotificationsNotifyActionBodyParamTypeId).value().toString();
|
||||
QString data = action.paramValue(pushNotificationsNotifyActionDataParamTypeId).toString();
|
||||
|
||||
if (pushService != "None" && token.isEmpty()) {
|
||||
return info->finish(Thing::ThingErrorAuthenticationFailure, QT_TR_NOOP("Push notifications need to be reconfigured."));
|
||||
}
|
||||
|
||||
QVariantMap nymeaData;
|
||||
// FIXME: This is quite ugly but there isn't an API that allows to retrieve the server UUID yet
|
||||
NymeaSettings settings(NymeaSettings::SettingsRoleGlobal);
|
||||
settings.beginGroup("nymead");
|
||||
QUuid serverUuid = settings.value("uuid").toUuid();
|
||||
settings.endGroup();
|
||||
nymeaData.insert("serverUuid", serverUuid);
|
||||
nymeaData.insert("data", data);
|
||||
|
||||
QNetworkRequest request;
|
||||
QVariantMap payload;
|
||||
|
||||
|
|
@ -147,6 +156,8 @@ void IntegrationPluginPushNotifications::executeAction(ThingActionInfo *info)
|
|||
QVariantMap notification;
|
||||
notification.insert("title", title);
|
||||
notification.insert("body", body);
|
||||
notification.insert("nymeaData", nymeaData);
|
||||
|
||||
|
||||
if (pushService == "FB-GCM") {
|
||||
|
||||
|
|
@ -189,6 +200,7 @@ void IntegrationPluginPushNotifications::executeAction(ThingActionInfo *info)
|
|||
notification.insert("card", card);
|
||||
notification.insert("vibrate", true);
|
||||
notification.insert("sound", true);
|
||||
notification.insert("nymeaData", nymeaData);
|
||||
|
||||
QVariantMap data;
|
||||
data.insert("notification", notification);
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
#include "integrations/integrationplugin.h"
|
||||
|
||||
#include "extern-plugininfo.h"
|
||||
|
||||
class IntegrationPluginPushNotifications: public IntegrationPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
{
|
||||
"id": "12ec06b2-44e7-486a-9169-31c684b91c8f",
|
||||
"name": "token",
|
||||
"displayName": "access token",
|
||||
"displayName": "Access token",
|
||||
"type": "QString"
|
||||
},
|
||||
{
|
||||
|
|
@ -40,12 +40,12 @@
|
|||
{
|
||||
"id": "ed9a0196-6c24-4e05-9cbc-c6834de38005",
|
||||
"name": "notify",
|
||||
"displayName": "notify",
|
||||
"displayName": "Send notification",
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "3b5e195c-9f96-4f2f-a654-f17ed77c02ee",
|
||||
"name": "title",
|
||||
"displayName": "title",
|
||||
"displayName": "Title",
|
||||
"type": "QString",
|
||||
"inputType": "TextLine",
|
||||
"defaultValue": ""
|
||||
|
|
@ -53,10 +53,17 @@
|
|||
{
|
||||
"id": "074c4c7c-037f-45ac-ab2f-f7aea3f84bde",
|
||||
"name": "body",
|
||||
"displayName": "body",
|
||||
"displayName": "Body",
|
||||
"type": "QString",
|
||||
"inputType": "TextArea",
|
||||
"defaultValue": ""
|
||||
},
|
||||
{
|
||||
"id": "ca36a33f-a7f2-4f59-8767-3522ecaaf8fb",
|
||||
"name": "data",
|
||||
"displayName": "Data",
|
||||
"type": "QString",
|
||||
"defaultValue": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,72 +1,91 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1">
|
||||
<TS version="2.1" language="de">
|
||||
<context>
|
||||
<name>IntegrationPluginPushNotifications</name>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="71"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="99"/>
|
||||
<source>The token must not be empty.</source>
|
||||
<extracomment>Error setting up thing</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Das Token darf nicht leer sein.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="76"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="93"/>
|
||||
<source>The push service must not be empty.</source>
|
||||
<extracomment>Error setting up thing</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Der Push-Benachrichtigungsdienst darf nicht leer sein.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="96"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="106"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="146"/>
|
||||
<source>Firebase server API key not installed.</source>
|
||||
<extracomment>Error setting up thing</extracomment>
|
||||
<translation>Das API-Token für den Firebase Server ist nicht installiert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="127"/>
|
||||
<source>Push notifications need to be reconfigured.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Push Notifications müssen erneut eingerichtet werden.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>pushNotifications</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="28"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="31"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="35"/>
|
||||
<source>Access token</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {12ec06b2-44e7-486a-9169-31c684b91c8f})</extracomment>
|
||||
<translation>Zugrangs-Token</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="38"/>
|
||||
<source>Body</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {074c4c7c-037f-45ac-ab2f-f7aea3f84bde})</extracomment>
|
||||
<translation>Benachrichtigungstext</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="41"/>
|
||||
<source>Client ID</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {d76da367-64e3-4b7d-aa84-c96b3acfb65e})</extracomment>
|
||||
<translation>Client ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="44"/>
|
||||
<source>Data</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {ca36a33f-a7f2-4f59-8767-3522ecaaf8fb})</extracomment>
|
||||
<translation>Daten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="47"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="50"/>
|
||||
<source>Push Notifications</source>
|
||||
<extracomment>The name of the ThingClass ({f0dd4c03-0aca-42cc-8f34-9902457b05de})
|
||||
----------
|
||||
The name of the plugin pushNotifications ({fdcea3b3-8d79-4fbb-8101-1ab45d71cedb})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Push-Benachrichtigungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="34"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="53"/>
|
||||
<source>Push service</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {3cb8e30e-2ec5-4b4b-8c8c-03eaf7876839})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Push-Benachrichtigungsdiesnt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="37"/>
|
||||
<source>access token</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {12ec06b2-44e7-486a-9169-31c684b91c8f})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="40"/>
|
||||
<source>body</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {074c4c7c-037f-45ac-ab2f-f7aea3f84bde})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="43"/>
|
||||
<source>notify</source>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="56"/>
|
||||
<source>Send notification</source>
|
||||
<extracomment>The name of the ActionType ({ed9a0196-6c24-4e05-9cbc-c6834de38005}) of ThingClass pushNotifications</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Benachrichtigung senden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="46"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="59"/>
|
||||
<source>Title</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {3b5e195c-9f96-4f2f-a654-f17ed77c02ee})</extracomment>
|
||||
<translation>Titel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="62"/>
|
||||
<source>nymea GmbH</source>
|
||||
<extracomment>The name of the vendor ({2062d64d-3232-433c-88bc-0d33c0ba2ba6})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="49"/>
|
||||
<source>title</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {3b5e195c-9f96-4f2f-a654-f17ed77c02ee})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>nymea GmbH</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
|||
|
|
@ -4,19 +4,26 @@
|
|||
<context>
|
||||
<name>IntegrationPluginPushNotifications</name>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="71"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="99"/>
|
||||
<source>The token must not be empty.</source>
|
||||
<extracomment>Error setting up thing</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="76"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="93"/>
|
||||
<source>The push service must not be empty.</source>
|
||||
<extracomment>Error setting up thing</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="96"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="106"/>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="146"/>
|
||||
<source>Firebase server API key not installed.</source>
|
||||
<extracomment>Error setting up thing</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginpushnotifications.cpp" line="127"/>
|
||||
<source>Push notifications need to be reconfigured.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
@ -24,8 +31,32 @@
|
|||
<context>
|
||||
<name>pushNotifications</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="28"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="31"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="35"/>
|
||||
<source>Access token</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {12ec06b2-44e7-486a-9169-31c684b91c8f})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="38"/>
|
||||
<source>Body</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {074c4c7c-037f-45ac-ab2f-f7aea3f84bde})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="41"/>
|
||||
<source>Client ID</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {d76da367-64e3-4b7d-aa84-c96b3acfb65e})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="44"/>
|
||||
<source>Data</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {ca36a33f-a7f2-4f59-8767-3522ecaaf8fb})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="47"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="50"/>
|
||||
<source>Push Notifications</source>
|
||||
<extracomment>The name of the ThingClass ({f0dd4c03-0aca-42cc-8f34-9902457b05de})
|
||||
----------
|
||||
|
|
@ -33,40 +64,28 @@ The name of the plugin pushNotifications ({fdcea3b3-8d79-4fbb-8101-1ab45d71cedb}
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="34"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="53"/>
|
||||
<source>Push service</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {3cb8e30e-2ec5-4b4b-8c8c-03eaf7876839})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="37"/>
|
||||
<source>access token</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, Type: thing, ID: {12ec06b2-44e7-486a-9169-31c684b91c8f})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="40"/>
|
||||
<source>body</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {074c4c7c-037f-45ac-ab2f-f7aea3f84bde})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="43"/>
|
||||
<source>notify</source>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="56"/>
|
||||
<source>Send notification</source>
|
||||
<extracomment>The name of the ActionType ({ed9a0196-6c24-4e05-9cbc-c6834de38005}) of ThingClass pushNotifications</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="46"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="59"/>
|
||||
<source>Title</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {3b5e195c-9f96-4f2f-a654-f17ed77c02ee})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="62"/>
|
||||
<source>nymea GmbH</source>
|
||||
<extracomment>The name of the vendor ({2062d64d-3232-433c-88bc-0d33c0ba2ba6})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/pushnotifications/plugininfo.h" line="49"/>
|
||||
<source>title</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: pushNotifications, ActionType: notify, ID: {3b5e195c-9f96-4f2f-a654-f17ed77c02ee})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
|||
Loading…
Reference in New Issue