如何通过calendarItemIdentifier打开苹果提醒事项App中的指定提醒项?
如何通过calendarItemIdentifier打开苹果提醒事项App中的指定提醒项?
看起来你遇到的问题是URL格式不对,导致系统没法识别你的打开请求——那个-10814错误其实就是说「找不到能处理这个URL的方式」。咱们来把代码修正一下:
你之前直接把calendarItemIdentifier拼在x-apple-reminder://后面的格式是错的,正确的做法是用查询参数来传递标识符。下面是修正后的代码:
@Environment (\.openURL) private var openUrl // ... // 先做个安全校验,避免强制解包崩溃 guard let reminderId = reminder.calendarItemIdentifier, let url = URL(string: "x-apple-reminder://?id=\(reminderId)") else { print("没法构造有效的提醒事项URL") return } // 打开URL的时候可以加个回调,看看是否成功 openUrl(url) { success in if !success { print("打开提醒失败了") } }
另外还有两个小细节要注意:
- 虽然你已经能拿到
calendarItemIdentifier,但还是要确认你的App已经在Info.plist里配置了NSRemindersUsageDescription,并且用户已经授权访问提醒事项(没权限的话后续操作也会出问题)。 - 如果遇到偶尔打不开的情况,可以试试用
reminder.externalIdentifier代替calendarItemIdentifier——这个是更稳定的全局标识符,URL格式和上面一样,把reminderId换成reminder.externalIdentifier就行。
你之前的URL之所以报错,是因为系统没法解析x-apple-reminder://FB2D0D45-23E9-4851-A86E-636064BA6A39这种格式,必须用?id=参数来传递标识符,系统才能正确识别要打开哪条提醒。
备注:内容来源于stack exchange,提问作者MatFetsch
相关产品推荐
相关产品推荐

