You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

分享CAF格式音频文件时Xcode报错求助

问题:分享CAF音频文件时Xcode报错但功能正常,需添加隐私权限吗?

我在分享沙盒DocumentDirectory中的CAF格式音频文件时,iPhone上能正常打开分享面板并保存到“文件”应用,但Xcode会抛出一系列错误。请问是否需要在info.plist中添加隐私权限字符串?

执行windowScene.windows.first?.rootViewController?.present(activityViewController, animated: true, completion: nil)时出现以下错误:

Failed to request default share mode for fileURL:file:///var/mobile/Containers/Data/Application/E13E4199-A782-4A29-8F13-A3568CCDD7B1/Documents/speakhby_exported_audio_20240623_174455.caf error:Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=1741, _LSFunction=runEvaluator}
Only support loading options for CKShare and SWY types.

error fetching item for URL:file:///var/mobile/Containers/Data/Application/C2BEA3CC-01DA-46E2-919A-42A7000C121F/Documents/speakhby_exported_audio_20240623_172629.caf : Error Domain=NSCocoaErrorDomain Code=256 "The file couldn’t be opened."

Error acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.primitiveattribute AND originator doesn't have entitlement com.apple.runningboard.assertions.frontboard AND target is not running or doesn't have entitlement com.apple.runningboard.trustedtarget AND Target not hosted by originator)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.primitiveattribute AND originator doesn't have entitlement com.apple.runningboard.assertions.frontboard AND target is not running or doesn't have entitlement com.apple.runningboard.trustedtarget AND Target not hosted by originator)}>

(501) personaAttributesForPersonaType for type:0 failed with error Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.mobile.usermanagerd.xpc was invalidated: failed at lookup with error 159 - Sandbox restriction." UserInfo={NSDebugDescription=The connection to service named com.apple.mobile.usermanagerd.xpc was invalidated: failed at lookup with error 159 - Sandbox restriction.}

相关代码如下:

func shareFile(_ fileName: String) {
    guard let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent(fileName) else {
        print("File not found!")
        return
    }
    
    if FileManager.default.fileExists(atPath: fileURL.path) {
        let activityViewController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
        
        // Find the current window scene
        if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
            // On iPad, you need to specify a source view when presenting the activity view controller
            activityViewController.popoverPresentationController?.sourceView = windowScene.windows.first?.rootViewController?.view
            
            // Present the view controller
            // Pop errors when executing this line
            windowScene.windows.first?.rootViewController?.present(activityViewController, animated: true, completion: nil)
        } else {
            print("No window scene found")
        }
    } else {
        print("File not found!")
    }
}

解答

不需要额外添加隐私权限字符串。这些报错属于系统内部调试日志,不影响实际功能运行:

  • NSOSStatusErrorDomain Code=-10814:是系统处理分享选项时的内部警告,CAF格式并非CKShare或SWY类型,系统会自动切换到通用分享逻辑,不影响功能。
  • NSCocoaErrorDomain Code=256:部分分享扩展尝试读取文件时的权限问题,但核心分享到“文件”应用的逻辑不受影响,因为UIActivityViewController已正确处理沙盒文件的临时访问权限。
  • RBSServiceErrorDomain和usermanagerd相关错误:属于系统服务的沙盒限制日志,是Xcode调试时的正常输出,与应用代码无关,发布版本不会出现这类日志。

可以优化代码的小建议:

  1. 给UIActivityViewController设置excludedActivityTypes,过滤掉不支持CAF格式的分享选项,减少系统内部错误触发。
  2. 完善iPad上popover的布局设置,避免潜在警告:
    if let sourceView = windowScene.windows.first?.rootViewController?.view {
        activityViewController.popoverPresentationController?.sourceView = sourceView
        activityViewController.popoverPresentationController?.sourceRect = CGRect(x: sourceView.bounds.midX, y: sourceView.bounds.midY, width: 0, height: 0)
    }
    

内容的提问来源于stack exchange,提问作者Zhou Haibo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:36:11