Ich entwickle eine Android-App mit NativeScript, die Push-Benachrichtigungen Funktionalität enthält. Immer wenn Push-Nachricht kommt muss ich die Nachrichtendetails speichern. Zur Implementierung dieser Funktionalität habe ich onMessageReceived Funktion verwendet.Umgang mit OnMessageReceived Funktion für Push-Benachrichtigungen: NativeScript
App.js file:::::
var application=require("application");
var applicationSettings = require("application-settings");
application.mainModule="Registration/Registration";
// application.mainModule="CreateTask/CreateTask";
application.css="styles/Follow.css";
application.start();
application.on(application.launchEvent, function (args) {
if (args.android) {
var gcm = require("nativescript-push-notifications");
gcm.register({ senderID: '616557539872' }, function (data) {
console.log("message"+ JSON.stringify(data));
}, function() { });
gcm.onMessageReceived(function callback(data) {
console.log("message received:::: ", "" + JSON.stringify(data));
// some code for storing notification contents to database
var notifications=require("~/notifications");
notifications.createViewModel(data);
});
} else if (args.ios !== undefined) {
//Do ios stuff here
}
});
notifications.js
var LocalNotifications = require("nativescript-local-notifications");
var dialogs = require("ui/dialogs");
var frameModule=require("ui/frame");
var notifications=new Object();
function doAddOnMessageReceivedCallback() {
console.log("doAddOnMessageReceivedCallback::");
LocalNotifications.addOnMessageReceivedCallback(
function(notificationData) {
frameModule.topmost().navigate("Registration/Registration");
dialogs.alert({
title: "Notification received",
message: "ID: " + notificationData.id +
"\nTitle: " + notificationData.title +
"\nBody: " + notificationData.body,
okButtonText: "Excellent!"
});
}
);
}
function createViewModel(data) {
console.log("createViewModel::"+data);
doAddOnMessageReceivedCallback();
LocalNotifications.schedule([{
id: 0,
title: "AddTaskNotification",
body: data,
ticker: this.ticker,
at: new Date(new Date().getTime())
}]).then(() => {
console.log("Notification scheduled");
}, (error) => {
console.log("ERROR", error);
});
}
exports.createViewModel = createViewModel;
Berechtigungen in app-> App_Resources-> Android-> AndroidManifest.xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
Manifest-Datei Inhalte unter: node_modules-> nativescript-push-notifications-> platforms-> Android-> AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<application>
<activity android:name="com.telerik.pushplugin.PushHandlerActivity"/>
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.pushApp.gcm" />
</intent-filter>
</receiver>
<service
android:name="com.telerik.pushplugin.PushPlugin"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
</application>
In onMessageReceived Funktion Ich bin eine Aktion durchführen und dann eine lokale notification.I'm Triggern wie dies zu tun, weil, wenn ich Funktion onMessageReceived gab dann Benachrichtigung nicht in Benachrichtigung zeigt, bar.So Ich bin auslösen lokale Benachrichtigung nach dem Speichern in db.
Wenn App ausgeführt wird, wird der Inhalt der onMessageReceived-Funktion ausgeführt. Wie auch immer, wenn App geschlossen ist, wird der Inhalt von onMessageReceived nicht ausgeführt (auch console.log wird nicht ausgeführt).
Wie behandelt man Daten in onMessageReceived Funktion, wenn App geschlossen ist?
Alle Vorschläge werden hilfreich sein. Danke.
Einen schönen How-to Artikel zu diesem Thema finden Sie hier: https://bradmartin.net/2015/12/28/use-google-cloud-messaging-for-push-notifications-with-nativescript/ –
Hallo, Danke für die Antwort. Ich folgte dem gleichen Tutorial um das Push-Notifications-Konzept zu implementieren.Aber das Problem ist, dass ich etwas Operation in der onMessageReceived Funktion durchführen muss. Aber diese Funktion führt nicht aus, wenn APP geschlossen wird. Können Sie irgendwelche Vorschläge geben ?? – Karteek
@Karteek Haben Sie jemals eine Lösung für dieses Problem gefunden? Ich habe das gleiche Problem. –