xcode onContinueUserActivity未使用Handoff & SwiftUI调用

lndjwyie  于 2023-06-24  发布在  Swift
关注(0)|答案(2)|浏览(116)

在遵循this教程关于如何使用SwiftUI与Handoff结合使用之后,但它不适合我。尝试了很多之后,似乎没有调用OnContinueUserActivity。切换图标显示,但一旦点击它,什么也没有发生。我该怎么解决这个问题?

import SwiftUI

struct Board: View {
    @State var BoardId: String
        
    
    var body: some View {
        VStack{
            Text("Board: \(BoardId)")
        }.onContinueUserActivity("bundleIdentifier.Board", perform: { userActivity in
            if let Board = userActivity.userInfo?["Board"] as? String {
                // Load handoff page
                self.BoardId = Board
                
            }
            
            logUserActivity(userActivity, label: "on activity")
        })
        .userActivity("bundleIdentifier.Board", element: BoardId) {Board, activity in
            let bundleid = Bundle.main.bundleIdentifier ?? ""
                        
            activity.addUserInfoEntries(from: ["Board": BoardId,
                                                           "setby": bundleid])
            logUserActivity(activity, label: "activity")
        }
        
    }
}

struct Board_Previews: PreviewProvider {
    static var previews: some View {
        Board(BoardId: "NaN")
    }
}

func logUserActivity(_ activity: NSUserActivity, label: String = "") {
    print("\(label) TYPE = \(activity.activityType)")
    print("\(label) INFO = \(activity.userInfo ?? [:])")
}
col17t5w

col17t5w1#

您仍然可以在SwiftUI和WidgetKit中使用onContinueUserActivity。如果您将并发症定义为:

@main
struct My_Complication: Widget {    
    var body: some WidgetConfiguration {
        StaticConfiguration(kind: "com.mycompany.myapp.complication", 
                            provider: Provider()) { entry in
            MyEntryView(entry: entry)
        }
        .configurationDisplayName(...)
        .description(...)
    }
}

然后在onContinueUserActivity中使用相同的kind标识符,如下所示:

.onContinueUserActivity("com.mycompany.myapp.complication", perform: { _ in
                            // Do something for complication
                        })
g2ieeal7

g2ieeal72#

对于将来遇到这种情况的人,swiftui已经新实现了从通用链接(或深层链接)接收url的方法,它不再是基于continue useractivity的方法

@main
    struct YouApp: App {
      var body: some Scene {
        WindowGroup {
          ContentView()
            .onOpenURL { url in
              print(url)
            }
        }
      }
    }

就像这样

相关问题