SwiftApp 中的用户活动未显示在快捷方式中

问题描述 投票:0回答:2

我已将 iOS 应用程序从 UIKit/ViewController 迁移到 SwiftApp/SwiftUI 生命周期。

我已将 UserActivity 标识符放入 plist.info NSActivityTypes 数组:

<key>NSUserActivityTypes</key>
<array>
<string>OpenMyApp</string>
</array>

在我的主视图上我放了这个:

.onContinueUserActivity("OpenMyApp", perform: { activity in
  print(#fileID, #function, "Executing: OpenMyApp")
})

但是,在我启动应用程序后,UserActivity 没有显示在快捷方式中。

我缺少什么?

ios swiftui shortcut nsuseractivity user-activity
2个回答
0
投票

我发现在 SwiftApp 中提供以下内容就足够了:

  import Foundation
  import CoreSpotlight
  import CoreServices
  import AppIntents

  struct OpenAppIntent: AppIntent {
    static var title: LocalizedStringResource = "Open App"
    static var openAppWhenRun: Bool = true
    static var isDiscoverable: Bool = true
    
    @MainActor
    func perform() async throws -> some IntentResult {
      return .result()
    }
  }

并通过以下方式公开:

  struct AppShortCuts: AppShortcutsProvider {
      static var appShortcuts: [AppShortcut] {
        AppShortcut(intent: OpenAppIntent(), phrases: ["Open \(.applicationName)"])
      }
  }

主要的“技巧”是为短语提供 (.applicationName)。否则在安装过程中它不会暴露于快捷方式!


0
投票

您需要在活动上将

isEligibleForPrediction
设置为
true
。 代码示例:

.userActivity("viewing-photo", { activity in
            activity.title = "View photo"
            activity.isEligibleForSearch = true
}
© www.soinside.com 2019 - 2024. All rights reserved.