Ausgabe
Ich erhalte zur Laufzeit folgenden Fehler:
Diese App ist abgestürzt, weil sie versucht hat, auf vertrauliche Daten ohne Nutzungsbeschreibung zuzugreifen. Die Info.plist der App muss einen NSMotionUsageDescription-Schlüssel mit einem Zeichenfolgenwert enthalten, der dem Benutzer erklärt, wie die App diese Daten verwendet.
Ich habe den Schlüssel zur Plist-Datei hinzugefügt:
<!-- 🏊 Motion -->
<key>NSMotionUsageDescription</key>
<string>This app needs to be able to access your motion use</string>
und das ist der Code in AppDelegate:
if ([CMMotionActivityManager isActivityAvailable])
{
CMMotionActivityManager *motionManager = [[CMMotionActivityManager alloc] init];
NSOperationQueue *motionActivityQueue = [[NSOperationQueue alloc] init];
[motionManager queryActivityStartingFromDate:[NSDate distantPast] toDate:[NSDate date] toQueue:motionActivityQueue withHandler:^(NSArray *activities, NSError *error) {
if (error && (error.domain == CMErrorDomain) && (error.code == CMErrorMotionActivityNotAuthorized)) {
} else if (activities || !error) {
}
dispatch_async(dispatch_get_main_queue(), ^{
});
}];
}
Warum bekomme ich immer wieder diesen Absturz? Ich habe alle abgeleiteten Ordner gelöscht und das Projekt bereinigt. Aber fragt mich immer noch nach dem Schlüssel! Ist es ein Apple-Bug?
Lösung
Ich habe das Problem gefunden. Ich hoffe, eines Tages wird es jemandem helfen. Gehen Sie zu Projekteinstellungen -> Info -> Suchen Sie im Abschnitt Benutzerdefinierte iOS-Zieleigenschaften nach den erforderlichen Hintergrundmodi und fügen Sie auch hier Ihren Schlüssel hinzu. Ich weiß nicht, warum nicht alle meine Plist-Dateischlüssel hier sind.
Beantwortet von – also
Antwort geprüft von – Gilberto Lyons (FixError Admin)