• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何关闭通知内容扩展?

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:17:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想实现与 IOS 原始时钟应用程序相同的功能。但我遇到了一个障碍:当贪睡剩余时间设置为零时,我无法以编程方式关闭通知内容扩展。 图片如下: enter image description here

我的 NotificationViewController.swift:

import UIKit
import UserNotifications
import UserNotificationsUI

class NotificationViewController: UIViewController, UNNotificationContentExtension {

    @IBOutlet var label: UILabel?

    var previousNotification: UNNotification?
    var secondsDown = Int()
    var countDownTimer: Timer?

    override func viewDidLoad() {
        super.viewDidLoad()

        let size = view.bounds.size
        preferredContentSize = CGSize(width: size.width, height: size.width * 0.7)
    }

    func didReceive(_ notification: UNNotification) {
        previousNotification = notification

        // Calculate the actual remaining seconds.
        let timeInterval = -(notification.date.timeIntervalSinceNow)
        secondsDown = (notification.request.content.userInfo["snoozeTime"] as! Int) * 60 - Int(timeInterval) - 1

        // Achieve count down timer.
        if countDownTimer == nil {
            countDownTimer = Timer(timeInterval: 1, target: self, selector: #selector(self.countDownAction), userInfo: nil, repeats: true)
            RunLoop.main.add(countDownTimer!, forMode: .defaultRunLoopMode)
        }

        // print the remaining time to text label.
        let miniute = String(format:"%ld", (secondsDown / 60))
        let second = String(format:"%02ld", (secondsDown % 60))
        let formatTime = String(format: "%@:%@", miniute, second)
        self.label?.text = String(format: "%@", formatTime)
    }

    func countDownAction(timer: Timer) {
        secondsDown -= 1

        let miniute = String(format:"%ld", (secondsDown / 60))
        let second = String(format:"%02ld", (secondsDown % 60))
        let formatTime = String(format: "%@:%@", miniute, second)
        self.label?.text = String(format: "%@", formatTime)

        if secondsDown == 0 {
            countDownTimer?.invalidate()
        }
    }
}



Best Answer-推荐答案


似乎从 iOS 12 开始有解决这个问题的方法:

   if #available(iOSApplicationExtension 12.0, *) {
                    //self.extensionContext?.performNotificationDefaultAction()
                    self.extensionContext?.dismissNotificationContentExtension()
    }

关于ios - 如何关闭通知内容扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42874245/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap