首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在swiftui、ios14中触摸本地通知时重定向到工作表或演示文稿

在SwiftUI和iOS 14中,可以通过触摸本地通知来重定向到工作表或演示文稿。这提供了一种方便的方式,让用户能够直接从通知中执行相关操作。

在iOS 14中,可以使用UNNotificationCategory和UNNotificationAction来定义通知的交互行为。首先,需要在应用的AppDelegate中注册通知的交互行为。以下是一个示例:

代码语言:txt
复制
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        // 请求用户授权显示通知
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
            if granted {
                // 用户授权成功
                UNUserNotificationCenter.current().delegate = self
            } else {
                // 用户授权失败
            }
        }
        
        return true
    }
    
    // 注册通知的交互行为
    func registerNotificationActions() {
        let redirectAction = UNNotificationAction(identifier: "redirect", title: "重定向", options: [])
        let category = UNNotificationCategory(identifier: "myCategory", actions: [redirectAction], intentIdentifiers: [], options: [])
        UNUserNotificationCenter.current().setNotificationCategories([category])
    }
    
    // 处理通知的交互行为
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        if response.actionIdentifier == "redirect" {
            // 执行重定向操作,打开工作表或演示文稿
            // 这里可以使用SwiftUI的NavigationLink或者Sheet来实现重定向
        }
        
        completionHandler()
    }
}

在上述代码中,首先在AppDelegate中请求用户授权显示通知,并在授权成功后注册通知的交互行为。在registerNotificationActions()方法中,创建了一个重定向的通知动作,并将其添加到自定义的通知分类中。然后,在userNotificationCenter(_:didReceive:withCompletionHandler:)方法中,可以根据用户的交互行为执行相应的操作,例如打开工作表或演示文稿。

在SwiftUI中,可以使用NavigationLink或Sheet来实现重定向。以下是一个示例:

代码语言:txt
复制
import SwiftUI

struct ContentView: View {
    @State private var showSheet = false
    
    var body: some View {
        VStack {
            Text("Hello, World!")
                .padding()
            
            Button("显示通知") {
                // 触发本地通知
                let content = UNMutableNotificationContent()
                content.title = "重定向通知"
                content.body = "点击通知可以重定向到工作表或演示文稿"
                content.categoryIdentifier = "myCategory"
                
                let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
                let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
                
                UNUserNotificationCenter.current().add(request) { (error) in
                    if let error = error {
                        print("添加通知失败:\(error.localizedDescription)")
                    }
                }
            }
        }
        .sheet(isPresented: $showSheet) {
            // 工作表或演示文稿的内容
            Text("这是一个工作表或演示文稿")
        }
    }
}

在上述代码中,当用户点击"显示通知"按钮时,会触发一个本地通知。通知的内容中设置了之前注册的通知分类标识符。在ContentView中,使用了一个名为showSheet的状态变量来控制工作表或演示文稿的显示。当用户点击通知并执行重定向操作时,可以将showSheet设置为true,从而显示工作表或演示文稿。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法

    概念 1.推送通知有5种不同的呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertView(显示具体内容) 在锁屏界面显示一块横幅(锁屏状态下,显示具体内容) 更新app图标的数字(说明新内容的数量) 播放音效(提醒作用) 2.用户也可以决定是否要开启以下4个功能: 显示App图标数字 播放音效 锁屏显示 显示在“通知中心” 3、注意: 发送推送通知时,如果程序正在前台执行,那么推送通知就不会被呈现出来,但是微信在前台的时候也能推送消息,方法是:创建一个view,仿造系统消息通

    06

    iOS10通知框架UserNotification理解与应用

    关于通知,无论与远程Push还是本地通知,以往的iOS系统暴漏给开发者的接口都是十分有限的,开发者只能对标题和内容进行简单的定义,至于UI展示和用户交互行为相关的部分,开发者开发起来都十分困难。至于本地通知,iOS10之前采用的是UILocationNotification类,远程通知有苹果服务器进行转发,本地通知和远程通知其回调的处理都是通过AppDelegate中的几个回调方法来完成。iOS10系统中,通知功能的增强是一大优化之处,iOS10中将通知功能整合成了一个框架UserNotification,其结构十分类似于iOS8中的UIWebView向WebKit框架整合的思路。并且UserNotification相比之前的通知功能更加强大,主要表现在如下几点:

    03
    领券