プッシュ通知機能を含むNativeScriptを使用してAndroidアプリを開発しています。 プッシュメッセージが来るたびに、メッセージの詳細を保存する必要があります。この機能を実装するために、私はonMessageReceived関数を使用しました。プッシュ通知用のonMessageReceived関数の処理: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;
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"/>
マニフェストファイルの内容の下で:node_modules-> nativescriptプッシュnotifications->プラットフォームの場合> 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>
onMessageReceived関数では、いくつかのアクションを実行してからローカル通知をトリガーします。これは、onMessageReceived関数に通知を送信した場合、通知バーに表示されないためです。 dbに保存した後
アプリが実行されている場合は、onMessageReceived関数の内容が実行されています。 アプリケーションが閉じられても、onMessageReceivedの内容は実行されません(console.logも実行されなくても)。
アプリケーションが閉じられているときにonMessageReceived関数でデータを処理する方法はありますか?
ご意見はお役に立ちます。ありがとうございます。
この記事に関するすてきな記事はこちらからご覧ください:https://bradmartin.net/2015/12/28/use-google-cloud-messaging-for-push-notifications-with-nativescript/ –
こんにちは、返信ありがとうございます。私はpushnotificationsの概念を実装するために同じチュートリアルに従った。しかし、問題は、私はonMessageReceived function.Butでいくつかの操作を実行する必要があるアプリケーションが閉じている場合は、その関数は実行されていません。任意の提案を与えることができますか? – Karteek
@Karteekこの問題を解決する方法はありますか?私は同じ問題を抱えています。 –