APNS只显示一个待处理通知。
创始人
2024-09-09 00:30:23
0

要解决APNS只显示一个待处理通知的问题,可以使用以下代码示例:

  1. 在AppDelegate.swift文件中,添加以下代码:
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        // 设置UNUserNotificationCenter的delegate为AppDelegate
        UNUserNotificationCenter.current().delegate = self
        
        // 请求用户授权显示通知
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
            if granted {
                print("用户授权显示通知")
            } else {
                print("用户未授权显示通知")
            }
        }
        
        application.registerForRemoteNotifications()
        
        return true
    }
    
    // 接收到远程通知时调用
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
        print("收到远程通知")
        
        // 处理接收到的通知
        
        // 调用处理通知的方法
        handleNotification(userInfo)
    }
    
    // 处理通知的方法
    func handleNotification(_ userInfo: [AnyHashable : Any]) {
        // 解析通知内容
        guard let aps = userInfo["aps"] as? [String: Any] else {
            return
        }
        
        // 获取通知内容
        let alert = aps["alert"] as? String ?? ""
        
        // 显示通知
        let alertController = UIAlertController(title: "收到通知", message: alert, preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "确定", style: .default, handler: nil))
        
        // 获取当前显示的控制器
        guard let rootViewController = UIApplication.shared.keyWindow?.rootViewController else {
            return
        }
        
        rootViewController.present(alertController, animated: true, completion: nil)
    }
    
    // iOS 10以上的系统会调用该方法来展示通知
    // 在该方法中调用处理通知的方法
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        let userInfo = notification.request.content.userInfo
        
        // 调用处理通知的方法
        handleNotification(userInfo)
        
        // 设置通知展示方式为alert和badge
        completionHandler([.alert, .badge])
    }
}
  1. 在Info.plist文件中添加以下代码,用于在应用处于前台时仍然显示通知:
UIBackgroundModes

    remote-notification

请注意,这只是一个示例代码,具体的实现可能会因为你的应用架构和需求而有所不同。此外,还需要确保在Apple开发者帐号中正确配置APNS和通知证书。

相关内容

热门资讯

记者揭秘!智星菠萝辅助(透视辅... 记者揭秘!智星菠萝辅助(透视辅助)拱趴大菠萝辅助神器,扑克教程(有挂细节);模式供您选择,了解更新找...
一分钟揭秘!约局吧能能开挂(透... 一分钟揭秘!约局吧能能开挂(透视辅助)hhpoker辅助靠谱,2024新版教程(有挂教学);约局吧能...
透视辅助!wepoker模拟器... 透视辅助!wepoker模拟器哪个好用(脚本)hhpoker辅助挂是真的,科技教程(有挂技巧);囊括...
透视代打!hhpkoer辅助器... 透视代打!hhpkoer辅助器视频(辅助挂)pokemmo脚本辅助,2024新版教程(有挂教程);风...
透视了解!约局吧德州真的有透视... 透视了解!约局吧德州真的有透视挂(透视脚本)德州局HHpoker透视脚本,必胜教程(有挂分析);亲,...
六分钟了解!wepoker挂底... 六分钟了解!wepoker挂底牌(透视)德普之星开辅助,详细教程(有挂解密);德普之星开辅助是一种具...
9分钟了解!wpk私人辅助(透... 9分钟了解!wpk私人辅助(透视)hhpoker德州透视,插件教程(有挂教学);风靡全球的特色经典游...
推荐一款!wepoker究竟有... 推荐一款!wepoker究竟有透视(脚本)哈糖大菠萝开挂,介绍教程(有挂技术);囊括全国各种wepo...
每日必备!wepoker有人用... 每日必备!wepoker有人用过(脚本)wpk有那种辅助,线上教程(有挂规律);wepoker有人用...
玩家必备教程!wejoker私... 玩家必备教程!wejoker私人辅助软件(脚本)哈糖大菠萝可以开挂,可靠技巧(有挂神器)申哈糖大菠萝...