从 SiriKit 中的 INExtension 启动应用程序

2024-04-03

我想使用 SiriKit 开始锻炼。开始锻炼需要从应用程序扩展打开主应用程序。

Apple 提供的样板文件INStartWorkoutIntentHandling处理程序是

func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion: (INStartWorkoutIntentResponse) -> Void) {
    let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent))
    let response = INStartWorkoutIntentResponse(code: .success, userActivity: userActivity)
    completion(response)
}

我如何从这里打开我自己的应用程序?就像是myapp://workout?action=start&name=pushups 这个答案 https://stackoverflow.com/questions/24356314/openurl-from-app-extension似乎不相关,因为我没有UIViewController with a extensionContext此扩展类型的属性。

最后相关的一点:对于其他操作(暂停、结束),我不想打开主应用程序,而是简单地暂停在主应用程序中运行的锻炼。我可以使用类似的自定义 URL 来暂停它,但这会打开应用程序,这是一个额外不必要的步骤。有什么好方法可以告诉主应用程序在不打开应用程序的情况下从 INExtension 执行特定操作吗?


对我来说,我能够像这样启动应用程序:

let activity  = NSUserActivity(activityType: NSUserActivityTypeBrowsingWeb)
activity.webpageURL = URL(string: "https://mywebsite/...")        
completion(MyIntentResponse(code: .continueInApp, userActivity: activity))

然后这将在 AppDelegate 中被调用

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
        if let url = userActivity.webpageURL {
            handleDeeplink(url)
        }
    }
    return false
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 SiriKit 中的 INExtension 启动应用程序 的相关文章

  • UIApplication.delegate 必须仅在主线程中使用[重复]

    这个问题在这里已经有答案了 我的应用程序委托中有以下代码 作为在其他 viewController 中使用 CoreData 的快捷方式 let ad UIApplication shared delegate as AppDelegate
  • 如何在 XCode 6 iOS 模拟器中运行/录制 iOS 应用程序?

    我可能会犯这个错误 但我正在尝试在 Xcode 6 iOS 模拟器中运行 iOS 应用程序 以便录制该应用程序的视频教程 我已经安装了 xCode 并且可以启动 iOS 模拟器 但似乎无法安装 app 文件 Library Develope
  • 使用本地时区将 unix 时间戳转换为 NSdate

    我得到一些start times and end times形式为NSDecimalNumber从 API 请求返回 我已经成功地能够转换这些NSDecimalNumbers into NSDates 但代码没有考虑时区 我需要它使用设备上
  • 如何在 Xcode 4 中使用 git 移动文件和文件夹?

    我熟悉 Xcode 中组和实际目录之间的差异 我总是在查找器中创建一个实际文件夹并将其拖到项目中 确保未选中 复制 当我移动文件夹时 我仅通过引用删除项目 将它们移动到查找器中 然后重新添加它们 现在我第一次使用git 在测试中发现 如果我
  • Xcode 7 UIWebView 不加载 url

    我在我的应用程序中使用 UIWebView 它在 Xcode4 5 6 模拟器中运行良好 但不适用于 Xcode 7 模拟器 我不知道为什么 模拟器中没有警告或错误 屏幕只显示空白页 请帮我 谢谢 import IndexViewContr
  • Spotify 会话管理

    我在我的应用程序中有一个 Spotify 登录并尝试进行自动登录 登录功能 func getSpotifyToken fromController controller UIViewController success spotifyTok
  • RestoreCompletedTransactions() 没有调用 paymentQueue UpdatedTransactions?

    我在 Swift 4 iOS 11 中恢复 IAP 时遇到问题 我的AppDelegate实施SKPaymentTransactionObserver In AppDelegate s didFinishLaunchingWithOptio
  • 当使用密码锁定屏幕时,iOS 应用程序无法在后台访问文件

    Good day 我有一个 IOS 消息应用程序 该应用程序将接收和发送的消息存储在 sqlite3 数据库中 并且该应用程序还会生成日志文件 这可能发生在前台或后台任务中 当在 IOS 设备上禁用密码时 一切工作正常 即使屏幕关闭且应用程
  • UIDatePicker 在 iOS 9 中无法正常显示

    我没有使用自动布局 这就是 UIDatePicker 在 iOS 9 上我的应用程序中的显示方式 选择器在 iOS 8 中看起来完美无缺 但问题仅存在于 iOS 9 中 知道如何解决此问题 P S 使用 auto布局目前对我来说不是一个解决
  • 表格视图单元格作为按钮

    我正在尝试将已分组的表视图单元格设置为按钮 但我似乎无法在 XCode 4 2 的界面生成器中或以编程方式找到执行此操作的位置 我尝试将表视图单元格链接到 IBAction 但它只允许我创建或链接到 IBOutlet 作为临时修复 我在单元
  • 没有可编译的体系结构(ARCHS=i386、VALID_ARCHS=arm64 armv7 armv7s)

    Preface 我确实看过类似的问题 https stackoverflow com questions 22328882 xcode 5 1 no architectures to compile for only active arch
  • 什么是“响应 backboardd 的终止而终止”?

    我在滑块的帮助下使用一段代码在视图上添加阴影 滑块设置为 15 到 15 此代码在以下情况下效果很棒slider value为正 但如果为负 应用程序将停止工作 崩溃日志很奇怪Terminating in response to backb
  • UICollectionView - 如果选择了单元格,则不会调用 didDeselectItemAtIndexPath

    我做的第一件事是设置选定的单元格 UICollectionViewCell collectionView UICollectionView collectionView cellForItemAtIndexPath NSIndexPath
  • Swift 3 NSCache 通用参数“KeyType”无法推断

    此代码适用于 Swift 2 x An internal in memory cache private var dataCache NSCache init In Swift 3它会导致编译错误 Generic parameter Key
  • UIScrollView 在 addSubview 或更改框架后出现不必要的滚动

    我有一个UIScrollView充满子视图 创建它并最初填充它时一切都很好 但是 当我添加位于可见屏幕部分之外的新子视图时 或者当我只是调整也在可见屏幕部分之外的现有子视图的大小时 会出现随后的 0 3 秒长的滚动动画 我可以看到它 发生在
  • 在 Xamarin.Forms 中添加方向更改布局

    我需要实现的是 在将屏幕从纵向更改为横向时向现有页面添加布局 我已经成功地使用检测方向变化void OnSizeAllocation 双倍宽度 双倍高度 但我无法为此事件添加布局 我的示例 C 代码是 public class MyLayo
  • 在类型中找不到枚举大小写开关

    有人可以帮我解决这个问题吗 我有以下内容public enum public enum OfferViewRow case Candidates case Expiration case Description case Timing ca
  • 删除 iOS 中的后台位置警报?

    我正在编写一个跟踪用户位置的导航应用程序 为了继续显示有关路线的通知 当手机锁定 接听电话等时 我还需要在应用程序处于后台时继续跟踪位置 Capabilities gt Background Modes gt Location update
  • 导航回 ViewController 时出现重复消息问题

    我有一个 ViewController 它向用户显示更多信息 然后他们单击一个按钮 它将它们发送到我的 messageView 它是一个 JSQ ViewController JSQViewController 使用集合视图类 当用户导航回
  • 界面生成器中 UIView 的边框颜色不起作用?

    我正在尝试通过 IB 设置视图的图层属性 除了边框的颜色之外 一切正常 属性layer borderColor 我记得一年前遇到过这个问题 最终我以编程方式解决了这个问题 而且 我仍然可以以编程方式执行此操作 但我很好奇为什么layer b

随机推荐