【问题标题】:application:continueUserActivity:restorationHandler: is not getting called when using handoffapplication:continueUserActivity:restorationHandler: 使用切换时未调用
【发布时间】:2019-12-31 00:49:38
【问题描述】:

我在我的测试设备(不使用模拟器)和 SwiftUI 上使用最新版本的 Xcode、macOS、iOS

我的 SwiftUI 用户界面和我的 UserActivity DelegateHandler:

struct UserActivityDelegateObserver: UIViewRepresentable {
    @Binding var textData: String

    func makeUIView(context: Context) -> UIView { return UIView() }

    func updateUIView(_ uiView: UIView, context: Context) {
        context.coordinator.userActivity?.needsSave = true
    }

    func makeCoordinator() -> Coordinator {
        Coordinator(textData: _textData)
    }

    class Coordinator: UIResponder, NSUserActivityDelegate {
        @Binding var textData: String

        init(textData: Binding<String>) {
            self._textData = textData
            super.init()

            self.userActivity = NSUserActivity(activityType: "com.domain.appname.activity")
            self.userActivity!.title = "My Activity"
            self.userActivity!.userInfo = ["Key": textData.wrappedValue]
            self.userActivity!.isEligibleForHandoff = true
            self.userActivity!.becomeCurrent()
        }

        override func updateUserActivityState(_ activity: NSUserActivity) {
            activity.addUserInfoEntries(from: ["Key": textData])
            super.updateUserActivityState(activity)
        }
    }
}

struct ContentView: View {
    @State var textData: String = "Placeholder"

    var body: some View {
        NavigationView {
            ZStack {
                UserActivityDelegateObserver(textData: $textData)
                Form {
                    Section {
                        TextField("Placeholder", text: $textData)
                    }
                }
            }
            .navigationBarTitle("Title", displayMode: .inline)
        }
    }
}

在我的appdelegate

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    print("this is not getting called")
    return true
}

当我在一台设备上启动应用程序并使用我的另一台设备进入该菜单(双击主页按钮时)并单击屏幕底部我的测试应用程序的切换符号时,应用程序启动但函数application:continueUserActivity:restorationHandler: 永远不会被调用,所以我无法继续,而是通过单击它来启动应用程序时显示标准行为。有什么想法吗?

【问题讨论】:

    标签: swift swiftui handoff nsuseractivity


    【解决方案1】:

    这可能是一个错误this post 报告了同样的问题但仍然没有答案,所以我认为这可能是 Xcode 测试版的一个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      相关资源
      最近更新 更多