我正在使用Cordova Push Notifications Plugin 1.3.4和我的Cordova/Phonegap应用程序.不幸的是,当收到推送通知时,我的JavaScript中的ecb回调永远不会被触发,我无法处理推送通知(即使应用程序在前台运行也是如此).
我正在使用演示中的示例代码:
pushNotification.register(tokenHandler, errorHandler, {"badge": "true", "sound": "true", "alert": "true", "ecb": "onNotificationAPN"});
Run Code Online (Sandbox Code Playgroud)
注册成功,但永远不会触发以下回调:
function onNotificationAPN (event) {
if (event.alert)
{
navigator.notification.alert(event.alert);
}
}
Run Code Online (Sandbox Code Playgroud) 我们有一个PhoneGap应用程序,一旦我们添加就拒绝构建PushPlugin
.
特别是在使用PhoneGap Build时,我们收到错误:
BUILD FAILED
/home/ec2-user/android-sdk/tools/ant/build.xml:573: ../../../../../../home/ec2-user/android-sdk/com.android.support:support-v4:+ resolve to a path with no project.properties file for project /project
Run Code Online (Sandbox Code Playgroud)
在将PhoneGap($ npm update -g phonegap
)和PhoneGap Android平台($ phonegap platform update android
)更新为最新版本之后,我们偶尔可以使用Ripple模拟器(在Visual Studio中构建)来构建它.
我们已经包含了这样的插件:
<gap:plugin name="com.phonegap.plugins.pushplugin" />
Run Code Online (Sandbox Code Playgroud)
或者,在Visual Studio 2015中构建时:
<vs:plugin name="com.phonegap.plugins.PushPlugin" version="2.5.0" src="https://github.com/phonegap-build/PushPlugin.git" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps" />
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我们可能出错的地方?
编辑:
我们也尝试在命令行上构建,但即使在安装之后cordova-plugin-android-support-v4
,也是如此;
$ cordova plugin add cordova-plugin-android-support-v4
Fetching plugin "cordova-plugin-android-support-v4" via npm
npm http GET https://registry.npmjs.org/cordova-plugin-android-support-v4
npm http 200 https://registry.npmjs.org/cordova-plugin-android-support-v4
Installing "cordova-plugin-android-support-v4" for android
Run Code Online (Sandbox Code Playgroud)
我们仍然会收到错误:
C:\Dev\CordovaBlank\BlankCordovaApp1\BlankCordovaApp1>cordova build android
Running …
Run Code Online (Sandbox Code Playgroud) android cordova phonegap-build phonegap-pushplugin visual-studio-2015
我有 使用cordova 3.5配置的推送插件https://github.com/phonegap-build/PushPlugin.git.当应用程序位于前台时,将调用通知插件回调,并且一切都按预期工作.
当应用程序处于非活动状态(在后台)时,会收到通知,我可以在通知栏中看到它们,但不会调用回调函数.我的代码基于push插件中给出的示例.下面是我简化的代码重现问题,
initialize : function () {
console.info('NOTIFY Ready to register for push notification.');
var pushNotification = window.plugins.pushNotification;
// Register device with push server
pushNotification.register(gcmSuccessHandler, gcmErrorHandler, {
'senderID': GCM_SENDER_ID,
'ecb': 'onNotificationGCM'
});
}
window.onNotificationGCM = function(notification){
//the beep is invoked 3 times only when the app is in foreground
navigator.notification.beep(3);
console.log('EVENT -> RECEIVED:' + notification.event + '');
}
Run Code Online (Sandbox Code Playgroud)
我已经在这个问题上突破了一天多了.任何帮助表示赞赏.
更新: 我终于找到了问题所在.我必须清除dalvik缓存并重新启动手机.到目前为止两次发生在我身上.似乎是android中的一个已知问题,https://github.com/phonegap-build/PushPlugin/issues/35.
push-notification cordova cordova-plugins phonegap-pushplugin
我正在尝试检索设备注册ID,以便从我的后端向它发送通知.
我已经尝试了几次:
GambifyApp.NotificationManager = window.GambifyApp.NotificationManager = Ember.Object.extend({
init: function(){
var pushNotification = window.plugins.pushNotification;
window.GambifyApp.NotificationHandler = GambifyApp.NotificationHandler;
if ( device.platform == 'android' || device.platform == 'Android' )
{
console.log('pushNotification Register');
pushNotification.register(
this.successHandler,
this.errorHandler, {
"senderID":GambifyApp.config.android_sender_id,
"ecb":"window.externalOnNotificationGCM"
});
},
});
window.externalOnNotificationGCM = function (e) {
console.log('reg id:' + e.regid);
};
Run Code Online (Sandbox Code Playgroud)
方法是在另一个对象内部(除ECB外,一切都保持不变:
"ecb":"window.GambifyApp.NotificationHandler.onHandler"
Run Code Online (Sandbox Code Playgroud)这是我放置处理程序的地方:
GambifyApp.NotificationHandler = window.GambifyApp.NotificationHandler = {
onHandler: function(e){
console.log('onHandler:');
if(e.event == "registered") {
console.log('reg id:' + e.regid);
}
console.log(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我的最后一个方法
"ecb":"GambifyApp.NotificationManager.onNotificationGCM"
Run Code Online (Sandbox Code Playgroud)这里增加了经理类:
GambifyApp.NotificationManager = window.GambifyApp.NotificationManager = Ember.Object.extend({ …
Run Code Online (Sandbox Code Playgroud) 我在Phonegap应用程序中使用PushPlugin.我从服务器获取通知没有任何问题,但我需要点击通知,然后我想打开一个特定页面,如"home.html"页面或"information.html"页面,但它是直接打开默认" index.html"页面.
我尝试使用Phonegap PushNotification来打开一个特定的应用程序页面,但我有点困惑,应用程序知道如何(message =="notify")打开一个特定的页面,它没有在答案中定义.我认为答案属于Phonegap Pushplugin的旧版本.
请帮助我.提前致谢.
我目前正在使用ionic/ngcordova构建一个android应用程序.我正在实施推送通知.我已经将推送通知实现为在app.run(function(){..})
阶段注入的服务.注册部分工作,我收到一个包含该回调的回调regid
.此外,当应用程序处于活动状态时,将引发事件并接收通知.
我遇到的问题是,当应用程序进入后台时,根本不会收到通知.我希望当应用程序没有运行或类似的东西时会引发本地通知,但绝对没有任何反应,这很奇怪.
我最近几天在网上搜寻寻找解决方案,但我一直无法找到任何能告诉我它应该工作的东西.
以下是我的app中的notificationService.js
app.factory('notificationService', ['$cordovaPush', function($cordovaPush){
var dataFactory = {};
//
// When the device is ready and this service has been plumbed in...
document.addEventListener("deviceready", function(){
console.log("initializing push notifications...");
_register();
}, false);
//
// Registers the device for push notifications...
var _register = function(){
var config = {};
if ( device.platform == 'android' || device.platform == 'Android' || device.platform == "amazon-fireos" ){
// TODO: centralise this value as it can change...
config = {
senderID: …
Run Code Online (Sandbox Code Playgroud) push-notification pushsharp ionic-framework phonegap-pushplugin ngcordova
我在android中使用Urban Airship推送通知插件.一切正常,但在上面的Android 4.4推送通知图标变为白色,没有显示通知图标.此问题仅在Lolypop(> 4.4)中.任何帮助表示赞赏谢谢.
我正在使用Ionic(Cordova + AngularJS)开发Android应用程序.有了它,我使用推送插件(https://github.com/phonegap-build/PushPlugin)
在我的资源文件夹,我有6个不同的应用程序图标规定,从ldpi
到xxxhdpi
<icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
<icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/>
<icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi"/>
<icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi"/>
<icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi"/>
<icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
Run Code Online (Sandbox Code Playgroud)
现在我构建了这个之后,我的最终资源文件夹结构如下所示:
android/res/drawable-ldpi/icon.png
android/res/drawable-mdpi/icon.png
Run Code Online (Sandbox Code Playgroud)
等等...
现在,这适用于所有设备上的App图标.但是如果我得到推送通知,状态栏中出现的应用程序图标太大,所以只显示图标的中间(仅在第一秒,似乎之后会重新加载通知(如果我拉)例如,状态栏下方显示正确).
经过一些研究后,我发现我提供的图标对于一般应用程序图标是正确的,但状态栏的图标必须在另一个维度,我在这里发现:Android状态栏需要大小为25x25dp的图标,而指南推荐32x32dp .谁错了?(第二个答案)
例如,使用我的三星s5我为我的xxhdpi图标144*144px切换为72*72px大小的相同图标,它的工作原理.该图标不再被剪切.
现在问我的问题: 我如何设置这个"辅助"图标,我只在我的资源文件夹中用于通知而不覆盖原始图标?
我有一个 Cordova 应用程序(codova(3.4.0)在 iOS 上运行,很快也会在 Android 上运行。推送通知已实现并正常工作。我无法通过推送通知检测应用程序何时启动并将应用程序重定向到右侧页。
注意:这与应用在后台运行时从推送通知启动应用无关。仅当应用程序完全关闭时!
我现在有以下工作流程:
正常启动:
从推送通知冷启动应用程序:
如您所见,冷应用启动场景转到启动视图,这是不必要的,导致用户等待第一个视图加载,然后再次重定向。
问题是当 deviceready 触发时,我的 javascript 代码还不知道即将到来的推送通知,所以我正在寻找解决这个问题的方法。
有没有办法将额外的参数传递给 deviceready cordova 事件?或者有人有其他想法或解决方案来解决这个问题吗?
javascript push-notification ios cordova phonegap-pushplugin
我正在使用 IONIC
Framework,我想在收到推送通知后设置我的应用程序的徽章。
当我的应用程序关闭时,有没有办法做到这一点?