如果尚未在 iOS 10 上安装到设备中,应用程序会立即崩溃

App crashes immediately if not already installed in the device on iOS 10

在将我的应用程序移植到 iOS10 时,我遇到了一个非常麻烦的问题。我一直在重新安装它,并且在现有副本上没有问题。然而,当我尝试删除它并从 Xcode 安装它时,该应用程序在执行后很快就悄无声息地崩溃了:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

使用简单的最终日志项: [访问]“<"private">”

如果我反过来从 AppStore 上发布的副本下载它,然后从 Xcode 执行它,应用程序不会再崩溃。 如果我在 iPad 上执行它,它甚至会显示一条启用本地化的消息,该消息一直停留在 window 上,直到我重新启动设备。 该应用程序也会在模拟器上崩溃。

如果我没有返回崩溃报告,它可能是什么以及如何了解更多信息?

如果应用程序访问如下任何私人数据而没有在 plist 中定义它们(获得用户的许可),应用程序将崩溃

日历活动
地点

如果您使用上述任何一种,则需要将隐私声明添加到 info.plist 文件。

下图是访问日历: Privacy - Calendars Usage Description = "some text"

key = Privacy - Calendars Usage Description value = "some Text"

iOS 10 延续了隐私政策并实施了新的隐私规则。我们应该记住在下一个项目中实施它们。

对于您的问题,您需要将以下行添加到 info.plist

<!--  Calendars -->
<key>NSCalendarsUsageDescription</key>
<string><Your description goes here></string>

以下是隐私规则的其余部分:

<!--  Photo Library -->
<key>NSPhotoLibraryUsageDescription</key>
<string><Your description goes here></string>

<!--  Camera -->
<key>NSCameraUsageDescription</key>
<string><Your description goes here></string>

<!--  Microphone -->
<key>NSMicrophoneUsageDescription</key>
<string><Your description goes here></string>

<!--  Location -->
<key>NSLocationUsageDescription</key>
<string><Your description goes here></string>

<!--  Location When In Use -->
<key>NSLocationWhenInUseUsageDescription</key>
<string><Your description goes here></string>

<!--  Location Always -->
<key>NSLocationAlwaysUsageDescription</key>
<string><Your description goes here></string>

<!--  Calendars -->
<key>NSCalendarsUsageDescription</key>
<string><Your description goes here></string>

<!-- ⏰ Reminders -->
<key>NSRemindersUsageDescription</key>
<string><Your description goes here></string>

<!--  Motion -->
<key>NSMotionUsageDescription</key>
<string><Your description goes here></string>

<!--  Health Update -->
<key>NSHealthUpdateUsageDescription</key>
<string><Your description goes here></string>

<!--  Health Share -->
<key>NSHealthShareUsageDescription</key>
<string><Your description goes here></string>

<!-- ᛒ Bluetooth Peripheral -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string><Your description goes here></string>

<!--  Media Library -->
<key>NSAppleMusicUsageDescription</key>
<string><Your description goes here></string>

希望这对您有所帮助。 :)