在 app.js 中加载插件参考:NativeScript
Loading plugin reference in app.js : NativeScript
我正在开发一个涉及推送的 NativeScript 应用程序 notifications.Whenever 推送通知来了我需要将通知内容存储到数据库中。
为此,我在 "onMessageReceived" 中编写了一些代码 function.This 代码在 GCM 注册代码所在的页面中。
如果应用是 运行 那么一切正常。问题是如果应用程序关闭,那么 "onMessageReceived" 功能甚至不会执行(我检查了控制台日志)。
因此,为此我尝试将 "onMessageReceived" 函数放在 app.js 中,这样即使应用程序关闭,它也会 execute.For 我正在尝试导入 "nativescript-push-notifications" 在 app.js 中,但出现错误 "application is null,it's not passed correctly"。下面是我的 app.js 代码。
app.js
var application = require("application");
var gcm=require("nativescript-push-notifications");
if(gcm.onMessageReceived) {
gcm.onMessageReceived(function callback(data) {
console.log("message received:::: ", "" + JSON.stringify(data));
storeInDatabase(data);// some function to store notification content into db.
});
}
application.mainModule="main-page";
application.start({ moduleName: "main-page" });
我们可以在 app.js 中导入 "nativescript-push-notifications" 参考文献吗??
任何建议都会 helpful.Thanks。
应用程序为空,因为您的应用程序尚未启动尝试在应用程序启动事件中添加插件
var application = require("application");
application.start({ moduleName: "main-page" });
application.on(application.launchEvent, function (args) {
if (args.android) {
var gcm = require("nativescript-push-notifications");
gcm.register({ senderID: 'conversate-1148' }, function (data) {
self.set("message", "" + JSON.stringify(data));
}, function () { });
if (gcm.onMessageReceived) {
gcm.onMessageReceived(function callback(data) {
console.log("message received:::: ", "" + JSON.stringify(data));
storeInDatabase(data);// some function to store notification content into db.
});
}
} else if (args.ios !== undefined) {
//Do ios stuff here
}
});
除了 Osei 的代码之外,您可能还想查看 AndroidManifest.xml 文件(在 platforms/android 文件夹中生成)并确保设置了以下权限:
<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" />
并且该插件在同一个 AndroidManifest.xml 文件中注册为服务,如下所示:
<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>
我正在开发一个涉及推送的 NativeScript 应用程序 notifications.Whenever 推送通知来了我需要将通知内容存储到数据库中。
为此,我在 "onMessageReceived" 中编写了一些代码 function.This 代码在 GCM 注册代码所在的页面中。
如果应用是 运行 那么一切正常。问题是如果应用程序关闭,那么 "onMessageReceived" 功能甚至不会执行(我检查了控制台日志)。
因此,为此我尝试将 "onMessageReceived" 函数放在 app.js 中,这样即使应用程序关闭,它也会 execute.For 我正在尝试导入 "nativescript-push-notifications" 在 app.js 中,但出现错误 "application is null,it's not passed correctly"。下面是我的 app.js 代码。
app.js
var application = require("application");
var gcm=require("nativescript-push-notifications");
if(gcm.onMessageReceived) {
gcm.onMessageReceived(function callback(data) {
console.log("message received:::: ", "" + JSON.stringify(data));
storeInDatabase(data);// some function to store notification content into db.
});
}
application.mainModule="main-page";
application.start({ moduleName: "main-page" });
我们可以在 app.js 中导入 "nativescript-push-notifications" 参考文献吗??
任何建议都会 helpful.Thanks。
应用程序为空,因为您的应用程序尚未启动尝试在应用程序启动事件中添加插件
var application = require("application");
application.start({ moduleName: "main-page" });
application.on(application.launchEvent, function (args) {
if (args.android) {
var gcm = require("nativescript-push-notifications");
gcm.register({ senderID: 'conversate-1148' }, function (data) {
self.set("message", "" + JSON.stringify(data));
}, function () { });
if (gcm.onMessageReceived) {
gcm.onMessageReceived(function callback(data) {
console.log("message received:::: ", "" + JSON.stringify(data));
storeInDatabase(data);// some function to store notification content into db.
});
}
} else if (args.ios !== undefined) {
//Do ios stuff here
}
});
除了 Osei 的代码之外,您可能还想查看 AndroidManifest.xml 文件(在 platforms/android 文件夹中生成)并确保设置了以下权限:
<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" />
并且该插件在同一个 AndroidManifest.xml 文件中注册为服务,如下所示:
<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>