我有一个使用Ionic框架构建的消息传递应用程序(在cordova上)。我打算为Android构建这个,我想要一种使用javascript / ionic从应用程序发送和接收推送通知的方法。
有没有关于如何设置这样的东西的好教程?
答案 0 :(得分:14)
Holly Schinsky提供example application。它的核心是PushPlugin的使用,它是处理Cordova上的推送通知的标准方法。关于该主题的GitHub存储库文档提供了相当广泛的教程。主要方法是pushNotification.register
,它注册设备以监听推送通知。
如果您需要在本地触发通知,则可能需要查看Local notification plugin。有了它,您可以添加要在设备上显示的通知,而无需外部服务来发送推送通知。
答案 1 :(得分:5)
使用此插件https://github.com/phonegap-build/PushPlugin。
Android设备通过Google云消息传递(GCM)服务接收推送通知,而iOS设备通过Apple推送通知(APN)服务接收推送通知。
接收通知的方式(通过声音,警报等)是注册时在应用程序代码中设置的选项的组合,以及用户的通知设备设置。
如果您想了解更具体的以下教程:
http://devgirl.org/2013/07/17/tutorial-implement-push-notifications-in-your-phonegap-application/
答案 2 :(得分:2)
ngCordova有一个支持推送通知的插件。它有iOS和Android的示例代码。看看:http://ngcordova.com/docs/plugins/pushNotifications/
答案 3 :(得分:2)
最新的phonegap-plugin-push允许您在离子应用中注册和接收推送通知。它保存在以下Github链接中:
https://github.com/phonegap/phonegap-plugin-push
<强>安装:强>
cordova plugin add https://github.com/phonegap/phonegap-plugin-push --variable SENDER_ID="XXXXXXX"
XXXXXXX
中的SENDER_ID="XXXXXXX"
映射到Google Developer Console中的项目编号。要查找项目编号登录Google Developer Console,请选择您的项目,然后单击下面屏幕截图中的菜单项以显示您的项目编号。
如果您没有创建Android应用程序,可以为此值添加任何内容。
注意:您可能需要在package.json中指定SENDER_ID变量。
"cordovaPlugins": [
{
"variables": {
"SENDER_ID": "XXXXXXX"
},
"locator": "phonegap-plugin-push"
}
]
注意:如果您计划使用prepare方法安装/恢复插件,则需要在config.xml中指定SENDER_ID变量。否则,prepare方法将跳过安装插件。
<plugin name="phonegap-plugin-push" spec="1.6.0">
<param name="SENDER_ID" value="XXXXXXX" />
</plugin>
安装完成后,您现在可以将以下代码添加到主javascript文件中,以注册并接收推送通知:
$ionicPlatform.ready(function () {
var push = PushNotification.init({
android: {
senderID: "XXXXXXX"//, //project token number (12 digit) from https://console.developers.google.com
// forceShow: "true", //force show push notification when app is in foreground on Android only.
},
browser: {
pushServiceURL: 'http://push.api.phonegap.com/v1/push'
},
ios: {
/*senderID: "XXXXXXX",*/ //If using GCM for ios, project token number (12 digit) from https://console.developers.google.com
/*gcmSandbox: 'true',*/ //If using GCM for ios
alert: 'true',
badge: 'true',
sound: 'true',
},
windows: {}
});
PushNotification.hasPermission(function (permissionResult) {
if (permissionResult.isEnabled) {
$log.debug("has permission for push notification");
/*Register device with GCM/APNs*/
push.on('registration', function (data) {
// data.registrationId
$log.debug("data.registrationId: " + data.registrationId);
});
push.on('notification', function (data) {
// data.message,
// data.title,
// data.count,
// data.sound,
// data.image,
// data.additionalData
$log.debug(JSON.stringify(data));
});
push.on('error', function (e) {
// e.message
$log.debug("e.message: " + e.message);
//alert(e.message);
});
}
});
}
}