• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - Siri Shortcut INPlayMediaIntent 2 分钟后停止播放

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:44:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在将我们的音乐服务应用程序与新的快捷方式功能集成在一起,并且遇到了奇怪的 SiriKit 扩展行为。我的 INPlayMediaIntentHandling 实现下载音乐轨道并开始使用 AVPlayer 播放它们,但每次启动 120 秒后扩展程序以代码 0 退出(Xcode 控制台显示“程序以退出代码结束:0”)。我尝试搜索,但 Apple 文档在此主题上为空,2018 年 WWDC session 仅包含此 Intent 的简要信息。

GitHub 上有一个示例 — https://github.com/beryu/SiriShortcutsSample 但它使用 Apple Music 30 秒样本。我尝试将它与长 mp3 流一起使用,但它的行为类似于我的应用程序并在 2 分钟后停止。

有人成功实现了 INPPlayMediaIntent 吗?

IntentHandler 代码

class IntentHandler: INExtension, INPlayMediaIntentHandling {

private var intentCompletion: Any?

@available(iOSApplicationExtension 12.0, *)
func handle(intent: INPlayMediaIntent, completion: @escaping (INPlayMediaIntentResponse) -> Void) {

    intentCompletion = completion
    switch intent.mediaContainer?.identifier {
    case ShortcutsMeta.FavouritesIdentifier: startFavourites()

    default: complete(.success);
    }
}

@available(iOSApplicationExtension 12.0, *)
private func complete(_ resultCode: INPlayMediaIntentResponseCode) {
    let userActivity = NSUserActivity(activityType: NSStringFromClass(INPlayMediaIntent.self))
    let response = INPlayMediaIntentResponse(code: resultCode, userActivity: userActivity)
    (intentCompletion as? ((INPlayMediaIntentResponse) -> Void))?(response)
    intentCompletion = nil
}

override func handler(for intent: INIntent) -> Any {
    return self
}

private func startFavourites() {
    let command = IntentCommand(type: .favourites)
    // this code loads track and calls AVPlayer to play it, then calls completion
    command.run{ [weak self] (result: Bool) in
        if #available(iOSApplicationExtension 12.0, *) {
            self?.complete(result ? .success : .failure)
        }
    }
}

}



Best Answer-推荐答案


我与一位 Apple 工程师进行了交谈,他说 INPlayMediaIntentHandling 只能与 .handleInApp 意图响应结果代码一起使用。因此,我将意图处理程序逻辑移动到应用程序主目标中,并通过 AppDelegate 的 -application:handleIntent:completionHandler: 调用它:

一切正常,除了来自 Siri 的 AudioSession 中断——她在启动后立即停止我的媒体播放逻辑。那个苹果工程师说这是一个 iOS 错误,苹果正在修复错误(可能在 12.1 中他们修复了它,我还没有检查)

关于ios - Siri Shortcut INPlayMediaIntent 2 分钟后停止播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606637/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap