微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在iOS的Capacitor / Cordova中使用Pushy更改徽章通知计数

如何解决在iOS的Capacitor / Cordova中使用Pushy更改徽章通知计数

我有一个使用Pushy(https://pushy.me)的Capacitor / Cordova应用程序来处理推送通知。向设备发送推送通知似乎正常,作为该交易的一部分,我可以在关闭应用程序时在图标上设置应用程序的通知计数。

但是,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进行测试,以查看会发生什么,理想情况下,我想将一个整数传递给刚被入侵的功能)。

所以到目前为止我学到的东西是我对Swift一无所知。

我是不是很正确,还是有更好的方法设置徽章计数器?

解决方法

好,所以我在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值)来调用它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?