Aplikasi ditolak karena deskripsi penggunaan tidak ada (Xcode8)


91

Jadi saya mendapat email ini hari ini yang mengatakan bahwa versi terbaru dari aplikasi saya ditolak oleh iTunes Connect karena beberapa deskripsi penggunaan yang hilang. Tepatnya:

Aplikasi ini mencoba mengakses data sensitif privasi tanpa deskripsi penggunaan. Info.plist aplikasi harus berisi kunci NSContactsUsageDescription dengan nilai string yang menjelaskan kepada pengguna bagaimana aplikasi menggunakan data ini.

Aplikasi ini mencoba mengakses data sensitif privasi tanpa deskripsi penggunaan. Info.plist aplikasi harus berisi kunci NSCalendarsUsageDescription dengan nilai string yang menjelaskan kepada pengguna bagaimana aplikasi menggunakan data ini.

Aplikasi ini mencoba mengakses data sensitif privasi tanpa deskripsi penggunaan. Info.plist aplikasi harus berisi kunci NSPhotoLibraryUsageDescription dengan nilai string yang menjelaskan kepada pengguna bagaimana aplikasi menggunakan data ini.

Aplikasi ini mencoba mengakses data sensitif privasi tanpa deskripsi penggunaan. Info.plist aplikasi harus berisi kunci NSBluetoothPeripheralUsageDescription dengan nilai string yang menjelaskan kepada pengguna bagaimana aplikasi menggunakan data ini.

Aplikasi ini mencoba mengakses data sensitif privasi tanpa deskripsi penggunaan. Info.plist aplikasi harus berisi kunci NSMicrophoneUsageDescription dengan nilai string yang menjelaskan kepada pengguna bagaimana aplikasi menggunakan data ini.

Aplikasi ini mencoba mengakses data sensitif privasi tanpa deskripsi penggunaan. Info.plist aplikasi harus berisi kunci NSMotionUsageDescription dengan nilai string yang menjelaskan kepada pengguna bagaimana aplikasi menggunakan data ini.

Setelah masalah ini diperbaiki, Anda dapat mengirimkan kembali biner yang telah diperbaiki.

Saya menemukan bahwa ini telah menjadi wajib dengan iOS 10, tetapi satu-satunya masalah adalah bahwa aplikasi saya tidak meminta izin untuk mengakses semua ini .. Saya pikir deskripsi tersebut hanya wajib jika Anda benar-benar meminta izin?

Apakah karena salah satu dependensi saya (Cocoapods) mungkin berisi beberapa kode untuk meminta izin ini? Atau apakah deskripsi ini wajib meskipun saya tidak pernah meminta untuk melihat kalender pengguna, kontak, dll?


3
Dari pengalaman saya - ini diperlukan hanya jika Anda meminta izin. Jadi mungkin beberapa ketergantungan melakukan ini untuk Anda. Juga SEMUA izin ini berbau amis terutama jika aplikasi Anda adalah daftar todo sederhana. Mungkin beberapa ketergantungan mengarah pada phishing?
Eimantas

Bisakah Anda memposting Anda PodFiledan daftar pustaka yang Anda gunakan (jika Anda menggunakan beberapa cocoapod luar)?
Julien Quere

Itu github.com/nickoneill/PermissionScope .. Terima kasih atas bantuan Anda!
KimHafr

ُ penjelasannya dan penggunaan acara: iosdevcenters.blogspot.com/2016/09/…
Saeid

saya memiliki masalah yang persis sama dan saya kira itu disebabkan oleh: pod 'ReactNativePermissions',: path => '../node_modules/react-native-permissions'
luky

Jawaban:


33

Deskripsi wajib untuk konten apa pun yang Anda atau kerangka kerja apa pun yang Anda tautkan untuk mencoba mengakses. Kesalahan dihasilkan saat mencoba mengakses konten jika deskripsi penggunaan tidak diberikan, jadi jika Anda mendapatkan kesalahan tersebut, aplikasi Anda harus memintanya. Anda harus mengetahui mengapa aplikasi Anda atau frameworknya memerlukan ini dan menambahkan deskripsi penggunaan yang sesuai ke info.plist aplikasi Anda.

Atau lebih ideal, jika Anda tidak membutuhkan akses, lihat apakah ada cara untuk tidak memintanya (atau gunakan kerangka kerja yang tidak perlu).


11
Saya tidak bisa seumur hidup saya membayangkan bahwa saya akan menambahkan perpustakaan yang meminta semua izin ini. Tapi itu sangat jelas ketika saya menemukannya: github.com/nickoneill/PermissionScope
KimHafr

1
Ya, kerangka kerja seperti itu mungkin bukan ide bagus karena menyebabkan aplikasi Anda mendeklarasikan lebih banyak izin daripada yang dibutuhkannya.
Matthew Seaman

3
Saya rasa ini lebih merupakan fitur daripada bug .. iTunes Connect mendeteksi bahwa di suatu tempat di aplikasi Anda, seseorang mungkin meminta izin. Dalam hal ini Anda harus mengisi deskripsi penggunaan untuk semua ini, jika Anda mungkin benar-benar memanggil beberapa kode di permissioncope. Saya suka kerangka kerjanya juga dan saya belum siap menggantinya. Jadi saya mengisi beberapa teks palsu, dan aplikasi itu disetujui. Saya sudah mengirimkannya ke AppStore, jadi semoga akan baik-baik saja :-)
KimHafr

15
Butuh cara untuk mendeteksi framework mana yang meminta izin tersebut?
neobie

5
Neobie - apakah Anda menemukan cara mendeteksi kerangka kerja yang meminta izin?
Nitesh

140

iOS 10 harus menambahkan izin di info.plist cukup tinjau BLOG ini : - pengaturan-dalam-ios-10 Anda mendapatkan semua ide.

Tambahkan izin di file info.plist berdasarkan log kesalahan Anda .

Catatan: Tuliskan alasan yang tepat untuk izin dalam nilai string jika tidak, apel menolak aplikasi lagi.

NSCameraUsageDescription

<key>NSCameraUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSContactsUsageDescription

<key>NSContactsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSPhotoLibraryUsageDescription

<key>NSPhotoLibraryUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSBluetoothPeripheralUsageDescription

<key>NSBluetoothPeripheralUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMicrophoneUsageDescription

<key>NSMicrophoneUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSMotionUsageDescription

<key>NSMotionUsageDescription</key>
    <string>$(PRODUCT_NAME) motion use.</string>

NSLocationAlwaysUsageDescription

<key>NSLocationAlwaysUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationUsageDescription

<key>NSLocationUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSLocationWhenInUseUsageDescription

<key>NSLocationWhenInUseUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSRemindersUsageDescription

<key>NSRemindersUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSiriUsageDescription

<key>NSSiriUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSVideoSubscriberAccountUsageDescription

<key>NSVideoSubscriberAccountUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSSpeechRecognitionUsageDescription

<key>NSSpeechRecognitionUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

NSCalendarsUsageDescription

<key>NSCalendarsUsageDescription</key>
    <string>You have to describe the real usage for a human.</string>

masukkan deskripsi gambar di sini


Bukankah seharusnya "$ {PRODUCT_NAME}" bukan "$ (PRODUCT_NAME)"? "{}" dari pada "()".
backslash-f

@ backslash-f, Periksa file plist yang ada di proyek baru dan seharusnya $(PRODUCT_NAME). Anda dapat melihat properti default seperti Bundle namedi file plist.
Jayesh Thanki

1
Harap perhatikan bahwa deskripsi umum seperti ini tidak akan lagi membuat Anda melalui persetujuan toko aplikasi. Kami hanya melakukan dua kali untuk deskripsi serupa. Anda harus mendeskripsikan penggunaan nyata untuk manusia
O'Rooney

9

Anda dapat menambahkan info.plist Anda seperti:

<key>NSCalendarsUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>Explain the reasons for accessing...</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>Explain the reasons for accessing...</string>

dll.

Harapan akan membantu seseorang ...


6

Saya mengalami masalah yang sama, dan tampaknya jika ada framework yang Anda tautkan memiliki kode yang meminta izin ini (meskipun aplikasi Anda tidak pernah memintanya), deskripsi penggunaan diperlukan. Namun menurut pengujian saya, jika Anda tidak memintanya, mereka tidak akan muncul di daftar izin aplikasi Anda.


3

Kalender: Kunci: Privasi - Kalender Penggunaan Deskripsi
Nilai: acara kalender $ (PRODUCT_NAME)

Pengingat: Kunci: Privasi - Pengingat Deskripsi Penggunaan
Nilai: $ (PRODUCT_NAME) penggunaan pengingat

Kontak : Kunci: Privasi - Kontak Penggunaan Deskripsi
Nilai: $ (PRODUCT_NAME) penggunaan kontak

Foto: Kunci: Privasi - Penggunaan Perpustakaan Foto Deskripsi
Nilai: penggunaan foto $ (PRODUCT_NAME)

Berbagi Bluetooth: Kunci: Privasi - Penggunaan Periferal Bluetooth Deskripsi
Nilai: $ (PRODUCT_NAME) Penggunaan Periferal Bluetooth

Mikrofon: Kunci: Privasi - Penggunaan Mikrofon Deskripsi
Nilai: Penggunaan mikrofon $ (PRODUCT_NAME)

Kamera: Kunci: Privasi - Deskripsi Penggunaan Kamera
Nilai: Penggunaan kamera $ (PRODUCT_NAME)

Lokasi: Kunci: Privasi - Lokasi Selalu Penggunaan Deskripsi
Nilai: $ (PRODUCT_NAME) penggunaan lokasi

Kunci: Privasi - Lokasi Saat Digunakan Deskripsi Penggunaan
Nilai: $ (PRODUCT_NAME) penggunaan lokasi

Heath: Key: Privacy - Health Share Usage Description
Nilai: $ (PRODUCT_NAME) heath share use

Kunci: Privasi - Pembaruan Kesehatan Penggunaan Deskripsi
Nilai: $ (PRODUCT_NAME) penggunaan pembaruan kesehatan

HomeKit: Kunci: Privasi - Penggunaan HomeKit Deskripsi
Nilai: Penggunaan peralatan rumah $ (PRODUCT_NAME)

Perpustakaan Media: Kunci: Privasi - Penggunaan Perpustakaan Media Deskripsi
Nilai: Penggunaan perpustakaan media $ (PRODUCT_NAME)

Gerakan: Kunci: Privasi - Deskripsi Penggunaan Gerakan
Nilai: penggunaan gerakan $ (PRODUCT_NAME)

Pengenalan Ucapan: Kunci: Privasi - Pengenalan Ucapan Deskripsi Penggunaan
Nilai: $ (PRODUCT_NAME) penggunaan ucapan

SiriKit: Kunci: Privasi - Deskripsi Penggunaan Siri
Nilai: $ (PRODUCT_NAME) penggunaan siri

Penyedia TV: Kunci: Privasi - Penyedia TV Deskripsi Penggunaan
Nilai: $ (PRODUCT_NAME) penggunaan tvProvider


0

Bagi siapa pun yang bertanya-tanya mengapa tiba-tiba aplikasi Anda sekarang memiliki semua setelan izin ini pada awalnya, bisa jadi karena CocoaPods atau Carthage - mereka menghubungkan semua izin ini. Saya baru saja meningkatkan aplikasi saya untuk menggunakan cordova-plugin-firebasex yang memiliki instalasi Cocoapods (dan ketergantungan) yang ekstensif. Anda dapat mematikan izin ini SEBELUM Anda menginstal cocoapods ke dalam proyek Anda dengan meletakkan IzinConfiguration.xcconfig di root proyek Anda - Anda dapat membaca lebih lanjut tentang ini di sini: https://cocoapods.org/pods/Permission#installation

Ini semua mengejutkan saya ketika versi baru aplikasi saya ditolak dengan 7 kunci / string izin hilang dari file Info.plist. Saya kemudian harus menggali proyek saya untuk menemukan apa yang menyebabkan ini karena aplikasi saya tidak memerlukan atau menggunakan izin ini (tidak pernah).

Ini mungkin ada tetapi saat ini saya tidak dapat menemukan cara untuk menghapus izin setelah integrasi pod ... harus menggali lebih dalam tentang cara melakukan ini tanpa memulai proyek saya dari awal.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.