iOS 10 - Perubahan dalam meminta izin Kamera, mikrofon, dan Perpustakaan Foto yang menyebabkan aplikasi macet

103

iOS 10, Sekarang Memerlukan Izin Pengguna untuk Mengakses Perpustakaan Media, Foto, Kamera, dan Perangkat Keras lain seperti ini. Solusi untuk ini adalah menambahkan kunci mereka ke info.plistdalam deskripsi untuk pengguna bahwa cara kami menggunakan data mereka,

Saya hanya dapat menemukan beberapa kunci

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

Saya ingin tahu apakah ada lebih banyak kunci juga untuk perangkat keras lain seperti iOS 10 jika Anda belum memberikan info.plistdeskripsi kunci yang tepat, aplikasi Anda akan macet jika dibangun menggunakan XCode - 8 beta.

Syed Ali Salman
sumber
bukankah iOS 10 di bawah NDA?
sage444
Saya tidak yakin tentang ini.
Syed Ali Salman

Jawaban:

138

[Daftar kunci privasi yang DIPERBARUI ke iOS 13 - lihat di bawah]

Ada daftar semua Cocoa Keysyang dapat Anda tentukan di Info.plistfile Anda :

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

(Xcode: Target -> Info -> Properti Target iOS Kustom)

iOS sudah memerlukan izin untuk mengakses mikrofon, kamera, dan perpustakaan media sebelumnya (iOS 6, iOS 7), tetapi karena aplikasi iOS 10 akan macet jika Anda tidak memberikan penjelasan mengapa Anda meminta izin (tidak mungkin kosong).

Kunci privasi dengan contoh deskripsi: contekan

Sumber

Atau, Anda dapat membuka Info.plistsebagai kode sumber: Kode sumber

Sumber

Dan tambahkan kunci privasi seperti ini:

<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>

Daftar semua kunci privasi: [DIPERBARUI ke iOS 13]

NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription

Perbarui 2019:

Dalam beberapa bulan terakhir, dua aplikasi saya ditolak selama peninjauan karena deskripsi penggunaan kamera tidak menentukan apa yang saya lakukan dengan foto yang diambil.

Saya harus mengubah deskripsi dari ${PRODUCT_NAME} need access to the camera to take a photomenjadi ${PRODUCT_NAME} need access to the camera to update your avatarmeskipun konteks aplikasinya jelas (pengguna mengetuk avatar).

Tampaknya Apple sekarang lebih memperhatikan deskripsi penggunaan privasi, dan kami harus menjelaskan secara rinci mengapa kami meminta izin.

KlimczakM
sumber
2
ya, tapi bagaimanapun perubahannya adalah aplikasi itu sekarang akan macet jika Anda belum memberikan penjelasan tentang mengapa kami meminta izin. Tolong koreksi saya jika saya salah.
Syed Ali Salman
1
@Syed Ali Salman Anda benar - ini akan macet sejak iOS10, sekarang benar-benar mendapatkan pertanyaan Anda. Akan memperbarui jawabannya. :)
KlimczakM
1
Saya berharap apel akan memutuskan apakah itu wajib atau tidak. Menurut dokumentasi apple, ini bukan:Explain why your app needs the information if it’s not obvious. You can add custom text to the system-provided permission request alert. Make the text specific and polite, so people don’t feel pressured. Keep the text short, and use sentence case. There’s no need to include your app name. The system already identifies your app as the one making the request.
sumofighter666
Saya sebelumnya berkomentar tentang dapat membiarkan nilai-nilai ini kosong untuk hanya menampilkan pesan yang dihasilkan sistem, dan meskipun berfungsi dengan baik secara fungsional, tampaknya Apple akan menolak biner Anda secara otomatis jika Anda menyertakan kunci-kunci ini tetapi tidak menetapkan nilai untuk mereka .
Stonz2
13
Bagi saya, tampaknya benar-benar tidak masuk akal dari Apple , membiarkan aplikasi crash ketika tidak ada deskripsi izin ... Sungguh pengalaman pengguna yang buruk! (Anonim) keluhan mengalir cepat di ulasan AppStore ... Dan tentu saja Simultor berperilaku berbeda ...
Gabriel
65

Silakan temukan di bawah kode untuk ios 10 meminta izin contoh untuk info.plist.
Anda dapat memodifikasi pesan khusus Anda.

    <key>NSCameraUsageDescription</key>
    <string>${PRODUCT_NAME} Camera Usage</string>

    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>${PRODUCT_NAME} BluetoothPeripheral</string>

    <key>NSCalendarsUsageDescription</key>
    <string>${PRODUCT_NAME} Calendar Usage</string>

    <key>NSContactsUsageDescription</key>
    <string>${PRODUCT_NAME} Contact fetch</string>

    <key>NSHealthShareUsageDescription</key>
    <string>${PRODUCT_NAME} Health Description</string>

    <key>NSHealthUpdateUsageDescription</key>
    <string>${PRODUCT_NAME} Health Updates</string>

    <key>NSHomeKitUsageDescription</key>
    <string>${PRODUCT_NAME} HomeKit Usage</string>

    <key>NSLocationAlwaysUsageDescription</key>
    <string>${PRODUCT_NAME} Use location always</string>

    <key>NSLocationUsageDescription</key>
    <string>${PRODUCT_NAME} Location Updates</string>

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>${PRODUCT_NAME} WhenInUse Location</string>

    <key>NSAppleMusicUsageDescription</key>
    <string>${PRODUCT_NAME} Music Usage</string>

    <key>NSMicrophoneUsageDescription</key>
    <string>${PRODUCT_NAME} Microphone Usage</string>

    <key>NSMotionUsageDescription</key>
    <string>${PRODUCT_NAME} Motion Usage</string>

    <key>kTCCServiceMediaLibrary</key>
    <string>${PRODUCT_NAME} MediaLibrary Usage</string>

    <key>NSPhotoLibraryUsageDescription</key>
    <string>${PRODUCT_NAME} PhotoLibrary Usage</string>

    <key>NSRemindersUsageDescription</key>
    <string>${PRODUCT_NAME} Reminder Usage</string>

    <key>NSSiriUsageDescription</key>
    <string>${PRODUCT_NAME} Siri Usage</string>

    <key>NSSpeechRecognitionUsageDescription</key>
    <string>${PRODUCT_NAME} Speech Recognition Usage</string>

    <key>NSVideoSubscriberAccountUsageDescription</key>
    <string>${PRODUCT_NAME} Video Subscribe Usage</string>

iOS 11 dan plus, Jika Anda ingin menambahkan foto / gambar ke perpustakaan Anda maka Anda harus menambahkan kunci ini

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>${PRODUCT_NAME} library Usage</string>
Ilesh P.
sumber
Terima kasih, jawaban sebenarnya, hanya Apple yang mengatakan "Tidak perlu menyertakan nama aplikasi Anda. Sistem sudah mengidentifikasi aplikasi Anda sebagai yang membuat permintaan."
Yucel Bayram
2
Itulah jawaban yang saya cari
Dinesh Phalwadiya
19

Anda harus menambahkan izin ini di Info.plist untuk iOS 10.

Foto:

Key       :  Privacy - Photo Library Usage Description    
Value   :  $(PRODUCT_NAME) photo use

Mikrofon:

Key        :  Privacy - Microphone Usage Description    
Value    :  $(PRODUCT_NAME) microphone use

Kamera:

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use
Kirit Modi
sumber
Seperti kunci kanan NSPhotoLibraryUsageDescription.
BangOperator