我正试图从iOS应用程序打开一个指向曲目的链接,但音乐应用程序随机崩溃。
我通过iTunes搜索API获取曲目URL。
以下是从JSON响应中提取的trackURL示例:https://itunes.apple.com/us/album/10-bagatelles-op.-5-bagatelle/id253254038?i=253254078&uo=4&合作伙伴Id=11
我添加我的会员id(&at=MYID)和音乐的媒体类型(&mt=1),以及&app=要在Apple music而不是iTunes中打开的音乐(这将是&app=iTunes)。我试过没有&在和&mt params,它仍然崩溃。我已经将链接粘贴到Safari(和Chrome)中,这是一个有效的链接;我看到了合适的页面。
为了真正打开URL,我使用
UIApplication.shared.openURL(url)
我也尝试过这种方式:
let svc = SFSafariViewController(url: URL, entersReaderIfAvailable: false)
svc.delegate = self
self.present(svc, animated: true, completion: nil)
有时一切都正常——音乐应用程序打开,然后转到曲目。它打得很好。然后我回到我的应用程序,尝试另一个链接。音乐崩溃。我的应用程序仍在运行。有一个音乐的崩溃日志。该公司表示,问题在于"试图保留已解除分配的对象"。我不知道我个人能做些什么。
欢迎提出任何建议。
Process: Music [1100]
Path: /Applications/Music.app/Music
Identifier: com.apple.Music
Version: 1.0 (3.0)
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: com.apple.Music [577]
OS Version: iPhone OS 10.2 (14C92)
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000001abd62c88
Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [0]
Triggered by Thread: 0
Application Specific Information:
attempted to retain deallocated object
我不认为我在尝试什么不寻常的事情。事实上,我认为这可能是iTunes搜索API的常见用例。
XCode 8.2.1,Swift 3,iOS 10.2,iPhone 6S+也运行iOS 10.2
来自Apple文档:
跟踪陷阱[EXC_BREAKPOINT//SIGTRAP]
如果在运行时遇到意外情况,Swift代码将终止此异常类型,例如:
具有nil值的非可选类型一个失败的强制类型转换
在我看来,解析您的url时出错。你能分享那部分吗?