2

我正在尝试通过 SwiftUI 而不是 UIKit 或 AppKit 来实现快速笔记。我不确定下面的行为是由于错误还是我遗漏了什么。

我已经使用.userActivity()视图修饰符成功地为 Handoff、Spotlight 和 Siri Reminders 实现了 NSUserActivity。这些 NSUserActivity 实例使用NSUserActivity.userInfo字典来存储并通过方法正确恢复内容.onContinueUserActivity(perform: )

快速笔记需要使用.persistentIdentifieror.targetContentIdentifier属性,而不是.userInfo单独使用字典。但是,当我使用下面的代码将其中任何一个设置为唯一标识符时,它们没有正确存储在用户活动中。

MyView()
    .userActivity(ActivityString, updateUserActivity)

private func updateUserActivity(_ activity: NSUserActivity) {
    activity.isEligibleForSearch = true
    activity.isEligibleForHandoff = true
    activity.title = "Title"

    activity.targetContentIdentifier = myItemUniqueID
    activity.persistentIdentifier = myItemUniqueID
    activity.userInfo = ["id": myItemUniqueID]

    print(activity.targetContentIdentifier) // Correctly prints
    print(activity.persistentIdentifier) // Correctly prints
    print(activity.userInfo) // Correctly prints
    }

设置上面的用户活动时,标识符正确打印。但是,在恢复用户活动时(通过 Handoff 和 Spotlight Search 测试),targetContentIdentifier 和 persistentIdentifier 字符串为空。

MyView()
    .onContinueUserActivity(ActivityString, perform: continueUserActivity)

private func continueUserActivity(_ activity: NSUserActivity) {

    print(activity.persistentIdentifier) // Nil
    print(activity.targetContentIdentifier) // Nil
    print(activity.userInfo) // Correctly prints
    }

还有什么我必须做的,或者这是出乎意料的行为吗?

4

0 回答 0