使用 cordova 在 Android/Ios 中显示徽章编号
Posted
技术标签:
【中文标题】使用 cordova 在 Android/Ios 中显示徽章编号【英文标题】:Display badge number in Android/Ios using cordova 【发布时间】:2016-10-18 15:33:34 【问题描述】:我正在使用 cordova 开发一个混合应用程序。在收到来自 APNS/FCM 的通知后,我想在应用程序图标中显示通知计数,如下图所示。我正在使用 cordova-plugin-fcm 和 cordova-plugin-badge 插件。
代码:
onDeviceReady: function()
cordova.plugins.notification.badge.hasPermission(function (granted)
);
cordova.plugins.notification.badge.registerPermission(function (hasPermission)
);
// switch on 'auto clear'
cordova.plugins.notification.badge.configure(
autoClear: true
);
//FCMPlugin.getToken( successCallback(token), errorCallback(err) );
//Keep in mind the function will return null if the token has not been established yet.
FCMPlugin.getToken(
function(token)
console.log("token "+token);
,
function(err)
console.log('error retrieving token: ' + err);
)
//FCMPlugin.subscribeToTopic( topic, successCallback(msg), errorCallback(err) );
//All devices are subscribed automatically to 'all' and 'ios' or 'android' topic respectively.
//Must match the following regular expression: "[a-zA-Z0-9-_.~%]1,900".
FCMPlugin.subscribeToTopic('all');
//FCMPlugin.onNotification( onNotificationCallback(data), successCallback(msg), errorCallback(err) )
//Here you define your application behaviour based on the notification data.
FCMPlugin.onNotification(
function(data)
//increase the badge
cordova.plugins.notification.badge.increase();
if(data.wasTapped)
//Notification was received on device tray and tapped by the user.
else
//Notification was received in foreground. Maybe the user needs to be notified.
,
function(msg)
console.log('onNotification callback successfully registered: ' + msg);
,
function(err)
console.log('Error registering onNotification callback: ' + err);
);
Image with badge !!
【问题讨论】:
【参考方案1】:解决方案是发送 2 条不同的 FCM 消息。
第一个没有通知,负载如下:
"data":
"badge":"true",
,
"to":"/topics/all",
"priority":"high"
这将触发 MyFirebaseMessagingService.java 中的 onMessageReceived,然后将有效负载推送到 FCMPlugin.onNotification() 回调。
FCMPlugin.onNotification(function(data)
if(data.badge == "true")
cordova.plugins.notification.badge.increase();
);
通过这样做,您将增加徽章数量。 然后,您使用这样的有效负载发送通知:
"notification":
"title":"Notification title",
"body":"Notification body",
"sound":"default",
"click_action":"FCM_PLUGIN_ACTIVITY",
"icon":"fcm_push_icon"
,
"to":"/topics/all",
"priority":"high"
这样您将在通知托盘中收到消息。我还建议设置cordova.plugins.notification.badge.set(0)
onDeviceReady 和 onResume 事件,以便在应用程序进入前台后清除徽章编号。
【讨论】:
以上是关于使用 cordova 在 Android/Ios 中显示徽章编号的主要内容,如果未能解决你的问题,请参考以下文章
通过cordova访问android/ios/win设备摄像头
Cordova AAD 服务器流身份验证在 Android 和 iOS 上挂起
使用cordova 进行谷歌登录将无法正常工作。 Android中的错误10和IOS中的错误请求
保存文档cordova android android ios ionic angular
如何在 MFP 8 cordova 应用程序(Android/iOS)中获取实际的用户代理
Cordova/jQuery - 识别您的应用程序是在 Web/移动浏览器还是移动应用程序 (Android/iOS) 上运行