我有一个使用Pushy的电容器/Cordova应用程序(https://pushy.me)以处理推送通知。向设备发送推送通知似乎很有效,作为交易的一部分,我可以在应用程序关闭时在图标上设置应用程序的通知计数。
然而,Pushy似乎只有一个JS选项来清除计数器Pushy.clearBadge();
,而不是在应用程序运行时将其更改为特定数字。这种情况是,如果用户读了一条消息,但留下两条未读消息,然后关闭应用程序,我希望计数器是正确的。
通过PushyPlugin.swift代码,Pushy.clearBadge();
的函数如下所示:
@objc(clearBadge:)
func clearBadge(command: CDVInvokedUrlCommand) {
// Clear app badge
UIApplication.shared.applicationIconBadgeNumber = 0;
// Always success
self.commandDelegate!.send(
CDVPluginResult(
status: CDVCommandStatus_OK
),
callbackId: command.callbackId
)
}
如果我能在UIApplication.shared.applicationIconBadgeNumber = 0;
行中传递一个不是零的整数,这就非常接近于给我所需要的
除了识别熟悉的编程语法外,我对Swift的了解微乎其微。我想我会破解它,并尝试将其添加到PushyPlugin.swift文件中:
@objc(setBadge:)
func setBadge(command: CDVInvokedUrlCommand) {
// Clear app badge
UIApplication.shared.applicationIconBadgeNumber = 100;
// Always success
self.commandDelegate!.send(
CDVPluginResult(
status: CDVCommandStatus_OK
),
callbackId: command.callbackId
)
}
但当我试图旋转时,该应用程序发出了Pushy.setBadge is not a function
的声音(注意,我用100测试,只是想看看会发生什么,理想情况下,我想给新入侵的函数传递一个整数(。
所以到目前为止我学到的是我对斯威夫特一无所知。
我这样做是对的吗,还是有更好的方法来设置徽章计数器?
好的,所以我在pushy cordova/www文件夹中发现了一个pushy.js文件,我需要将我的新功能添加到
{
name: 'setBadge',
noError: true,
noCallback: true,
platforms: ['ios']
},
然后,我在PushyPlugin.swift函数中添加了一些尝试和错误:
@objc(setBadge:)
func setBadge(command: CDVInvokedUrlCommand) {
UIApplication.shared.applicationIconBadgeNumber = command.arguments[0] as! Int;
// Always success
self.commandDelegate!.send(
CDVPluginResult(
status: CDVCommandStatus_OK
),
callbackId: command.callbackId
)
}
然后这可以在我的电容器项目中调用,Pushy.setBadge(X);
(X是你想在图标上显示的int值(。