在iOS上使用电容器/Cordova中的Pushy更改徽章通知计数



我有一个使用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值(。

相关内容

最新更新