20

私のアプリでは、card.io を使用してクレジット カードをスキャンしています。iOS 9 では問題なく動作します。iOS 10 ではアプリがクラッシュし、大量のガベージ メッセージがスローされるため、xcode 8 ベータ 2 コンソールでクラッシュ ログが見つかりません。

そして、プライバシー - >設定をチェックして、アプリのカメラが無効になっているかどうかを確認しましたが、アプリがそのセクションにリストされていません.iOS 10は、アプリがカメラを使用する許可を与えていないようです.

次のコードを使用して許可を要求します。

-(BOOL)checkCameraPermissions{

    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if(authStatus == AVAuthorizationStatusAuthorized)
    {
        // start card-io
        return YES;
    }
    else if(authStatus == AVAuthorizationStatusNotDetermined)
    {

        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted)
         {
             if(granted)
             {
                 //Start card-io
                 [self testIsNewCard];
             }

         }];
    }
    else if (authStatus == AVAuthorizationStatusRestricted)
    {
        //Alert
        // Alert camera denied

        UIAlertController *aCon=[UIAlertController alertControllerWithTitle:@"Camera denied" message:@"Camera cannot be used" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *ok =[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            [aCon dismissViewControllerAnimated:YES completion:nil];
        }];
        [aCon addAction:ok];
        [self presentViewController:aCon animated:YES completion:nil];

        return NO;

    }

    return NO;

}

このコードを実行すると、authStatus が次のように返されます。AVAuthorizationStatusNotDetermined

ブロックに入った直後にアプリがクラッシュしましたrequestAccessForMediaType:AVMediaTypeVideo

コンソールに表示されるガベージ ログが非常に多く、クラッシュ メッセージを見つける手がかりがありません。

編集: xcode 8 で不要なログをすべて無効にするオプションを見つけました。ここに投稿された回答。しかし、バックトレースのデバッグを無効にした後でも、xcode はクラッシュ ログを表示しませんでした。

私のxcode8はこのメッセージを表示するだけで、アプリは終了します:

  App[1124:226447] [access] <private>

場所とプライバシーのリセットも試しましたが、メディア アクセスを要求しようとするとアプリがクラッシュします。

なぜこれが起こっているのですか?

4

3 に答える 3

27

"Privacy - Camera Usage Description" キーを info.plist ファイルに追加したところ、機能するようになりました。

于 2016-07-13T16:12:20.830 に答える
11

ではiOS 10、すべてのユーザー プライベート データ型へのアクセスを宣言する必要があります。これを行うには、アプリの に使用法キーを追加しますInfo.plist。詳細については、以下のスクリーンショットをご覧ください。

Privacy - Camera Usage Descriptionキーをアプリの Info.plist とその使用情報に追加する必要があります。

詳細については、下の GIF を参照してください。

GIF

または、info.plist 経由で追加する場合は、 NSCameraUsageDescriptionキーを追加する必要があります。

info.plist の文字列の下にコピー アンド ペーストするだけです。

<key>NSCameraUsageDescription</key>
<string>Take the photo</string>

詳細については、下の GIF を参照してください。

GIF

詳細については、リンクを参照してください。

于 2016-09-20T10:40:52.927 に答える
8

iOS 10は、プライバシー ポリシーを継続し、新しいプライバシー ルールを実装しました。そして、次のプロジェクトでそれらを実装することを忘れないでください。

あなたの問題のために、次の行を追加する必要がありますinfo.plist

<!--  Camera -->
<key>NSCameraUsageDescription</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>

お役に立てれば。:)

于 2016-09-22T07:06:14.487 に答える