我们的应用程序在应用程序商店中上线了近一年,我们收到了一些来自客户的差评,更新后无法打开该应用程序。
用户报告说,在删除并随后重新安装应用程序后,他们无法启动该应用程序。 一位用户确实表示,只有在将 iPhone 恢复出厂设置后才能启动该应用程序。
我们认为该问题与钥匙串(keychain)有关,因为这似乎在系统中持续存在。因此,我们将用于访问钥匙串(keychain)的第三方库更新为 https://github.com/soffes/sskeychain 。此更改是在版本 1.4.1 中进行的。
发布 1.4.1 后,一些用户表示他们终于能够打开该应用程序了。不幸的是,由于我们无法调试该问题,因此我们无法确定哪些可能的问题已得到解决。此外,我们看到其他用户在升级到 1.4.1 和 1.4.2 后仍然遇到相同的问题。
我们还在考虑问题可能出在我们的依赖库之一上:
- Flurry 分析
- Facebook iOS SDK
- PayPal MPL
- Hockeyapp ios 库
- ASIHTTP请求
- 我们不使用 CoreData
我们无法使用标准 iOS 工具对此进行调试,我们甚至不能指望曲棍球应用程序为我们提供崩溃报告,因为该应用程序在发送之前已关闭。
我们不理解这种行为,并且在从应用程序商店更新应用程序时,我们显然无法控制该应用程序。应用程序删除后是否有任何内容仍然存在?如果没有,您是否知道有什么可能阻止重新安装的应用程序的打开?
编辑: 我们正在 applicationDidFinishLaunching: app delegate 的方法中配置 hockeyapp lib,如下所示:
[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:QUINCY_APP_IDENTIFIER delegate:self];
[[BITHockeyManager sharedHockeyManager] setDisableUpdateManager:YES];
[[[BITHockeyManager sharedHockeyManager] crashManager] setCrashManagerStatus:BITCrashManagerStatusAutoSend];
[[BITHockeyManager sharedHockeyManager] startManager];
#ifdef DEBUG
[[BITHockeyManager sharedHockeyManager] setDebugLogEnabled:YES];
#endif
应用程序标识符在build设置中配置,并且每个配置都不同。
最佳答案
一般来说,启动时可能会发生多个问题:
所需的库未正确链接:但这不是问题,因为这样所有应用程序启动都会崩溃!
启动时间太长,应用程序被看门狗杀死。
如果您正在执行以下操作,这可能是您的问题:在
applicationDidFinishLaunching:
运行循环中迁移主线程上的大量数据,因此应用程序无法响应用户输入,因此将在大约 20 秒后被看门狗杀死。确保在不阻塞主线程的情况下进行迁移!
您在启动时遇到崩溃(不是杀死!)。由于应用程序在 HockeyApp SDK 发送崩溃之前崩溃,因此您将无法获取这些崩溃报告。
HockeyApp iOS SDK 提供了一种处理这些问题的机制,请按照以下页面中给出的说明进行操作:http://support.hockeyapp.net/kb/how-tos-faq/how-to-handle-crashes-during-startup-on-ios
所以 2. 或 3. 是你的问题。如果您有机会直接联系受影响的用户,您可以要求提供 iOS 生成的崩溃报告。否则请检查我给出的建议。
关于iOS应用程序更新后打不开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15409323/