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

从今天扩展程序打开时 iOS 应用程序崩溃

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

Crash when open containing app from today extension 的可能重复项.

我正在尝试使用自定义 URL 方案从今天的扩展小部件打开包含应用程序。我在扩展中使用的代码是:

let urlStr = String(format: "myapp://?device_id=%@", deviceId!)
let url = NSURL(string: urlStr)
self.extensionContext!.openURL(url!, completionHandler: nil)

但是,包含应用程序在打开时崩溃:

Thread : Crashed: com.apple.main-thread
0  CoreFoundation                 0x0000000103e572dc CFStringCreateCopy + 28
1  libswiftFoundation.dylib       0x0000000105f02a44 _TF10Foundation24_convertNSStringToStringFCSo8NSStringSS + 148
2  MyApp                          0x00000001017a9055 @objc MyApp.CLAppDelegate.application (MyApp.CLAppDelegate)(ObjectiveC.UIApplication, openURL : ObjectiveC.NSURL, sourceApplication : Swift.String, annotation : Swift.Optional<Swift.AnyObject>) -> Swift.Bool (CLAppDelegate.swift)
3  UIKit                          0x0000000104898685 -[UIApplication _applicationOpenURL:payload:] + 185
4  UIKit                          0x00000001048a0816 -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:] + 2380
5  UIKit                          0x00000001048a42e8 __88-[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:]_block_invoke + 196
6  UIKit                          0x00000001048a4215 -[UIApplication _handleApplicationLifecycleEventWithScene:transitionContext:completion:] + 349
7  UIKit                          0x000000010488f31a -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 486
8  FrontBoardServices             0x000000010903a2a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16
9  CoreFoundation                 0x0000000103eb553c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
10 CoreFoundation                 0x0000000103eab285 __CFRunLoopDoBlocks + 341
11 CoreFoundation                 0x0000000103eaaa43 __CFRunLoopRun + 851
12 CoreFoundation                 0x0000000103eaa486 CFRunLoopRunSpecific + 470
13 GraphicsServices               0x0000000106e6e9f0 GSEventRunModal + 161
14 UIKit                          0x0000000104891420 UIApplicationMain + 1282
15 MyApp                       0x00000001017ac57e top_level_code (CLAppDelegate.swift:16)
16 MyApp                       0x00000001017ac5ba main (CLAppDelegate.swift)
17 libdyld.dylib                  0x0000000106155145 start + 1

从其他任何地方打开时,相同的自定义 URL 方案都有效。

使用 Xcode 6.1.1,部署目标 8.1。



Best Answer-推荐答案


设法自己解决了这个问题,并认为我会发布解决方案。

事实证明,由 Xcode 先前版本之一自动完成的 UIApplicationDelegate 声明是不正确的:

func application(application: UIApplication, 
                 openURL url: NSURL, 
                 sourceApplication: String!,   // Wrong
                 annotation: AnyObject?) -> Bool

应该是:

func application(application: UIApplication, 
                 openURL url: NSURL, 
                 sourceApplication: String?,   // OK
                 annotation: AnyObject?) -> Bool

(sourceApplication 需要是 String? 而不是 String!)

希望这对某人有所帮助。

关于从今天扩展程序打开时 iOS 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27941626/

回复

使用道具 举报

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

本版积分规则

关注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