Galat Appstore terhubung: String Tujuan Hilang dalam File Info.plist

153

Saya telah mengirimkan aplikasi saya untuk ditinjau ke App Store Connect. Meskipun aplikasi ini masih dalam peninjauan, saya menerima email untuk memberi tahu saya bahwa saya harus memperbaiki kesalahan. Inilah isi pesannya:

Pengembang yang terhormat,

Kami mengidentifikasi satu atau lebih masalah dengan pengiriman terbaru untuk aplikasi Anda XXXXX. Pengiriman Anda berhasil, tetapi Anda mungkin ingin memperbaiki masalah berikut dalam pengiriman berikutnya:

"String Tujuan Hilang dalam File Info.plist. Kode aplikasi Anda mereferensikan satu atau lebih API yang mengakses data pengguna yang sensitif. File Info.plist aplikasi harus berisi kunci NSLocationAlwaysUsageDescription dengan string purpose yang menghadap pengguna yang menjelaskan dengan jelas dan sepenuhnya mengapa aplikasi Anda perlu menjelaskan. Mulai musim semi 2019, semua aplikasi yang dikirimkan ke App Store yang mengakses data pengguna akan diminta untuk memasukkan string tujuan. Jika Anda menggunakan perpustakaan eksternal atau SDK, mereka dapat merujuk API yang membutuhkan string tujuan. mungkin tidak menggunakan API ini, string tujuan masih diperlukan. Anda dapat menghubungi pengembang perpustakaan atau SDK dan meminta mereka merilis versi kode mereka yang tidak mengandung API.

Setelah Anda memperbaiki masalah, Anda dapat menggunakan Xcode atau Application Loader untuk mengunggah biner baru ke iTunes Connect.

Salam Hormat,

Tim App Store

Aplikasi saya sepenuhnya dibangun dengan Expo dan saya tidak tahu cara mengakses dan memodifikasi Info.plist.

Ada ide?

John doe
sumber
3
Saya mengalami masalah yang sama dengan versi terbaru, mengingat bahwa saya bahkan tidak menggunakan Layanan Lokasi di aplikasi saya. Dan Apple tidak memiliki dokumen resmi tentang perubahan ini.
huong
3
+1 Melakukan rilis untuk aplikasi yang sama 2 hari yang lalu dan semuanya baik-baik saja. 2 hari kemudian, baru saja mengubah beberapa baris kode untuk melakukan rilis baru (tidak menambahkan lebih banyak Pod atau sesuatu seperti itu) dan saya mendapat pesan ini
Tiago Ornelas
2
Kami telah mengalami masalah yang sama. Saya menduga ini adalah bug dalam proses persetujuan (semoga). Saya akan mengabaikan akhir pekan dan berharap itu diperbaiki pada hari Senin.
AMB
2
Saya menghadapi masalah yang sama persis sekarang meskipun Aplikasi kami tidak benar-benar membutuhkan Layanan Lokasi Selalu. Itu hanya perlu NSLocationWhenInUseUsageDescription yang sudah kita punya tujuan. Mungkin ini hanya kesalahan di pihak Apple?
ilight
3
Dan di Apple-fashion, tautan yang mereka berikan di email untuk memperbaikinya, rusak.
gwalshington

Jawaban:

45

Jika Anda menggunakan Expo, Anda dapat menambahkan penyelesaian dengan menambahkan infoPlist ke app.json seperti:

  "expo": {
     "ios": {
       "bundleIdentifier": "com.app.myapp",
       "infoPlist": {
         "NSLocationAlwaysUsageDescription": "Some message to appease Apple.",
       },
     },
   }

Expo Dokumen

gwalshington
sumber
25
Sebenarnya ini BUKAN "beberapa pesan untuk menenangkan Apple" tetapi untuk memberi tahu pengguna APA yang Anda lakukan dengan data yang dihasilkan pengguna (lokasi) dalam kasus ini. Ini adalah masalah privasi dan saya pikir itu baik untuk bersikap adil kepada pengguna aplikasi Anda.
Lookaji
4
Kena kau! Saya berpikir untuk pemula yang mungkin tergoda untuk meninggalkannya begitu! Saya tidak mau terdengar pemarah :) bersorak!
Lookaji
@ gwalshington Saya tidak punya objek pameran di app.json
Heemanshu Bhalla
@HeemanshuBhalla hmm, saya tidak yakin mengapa. Di app.json saya, itu di bagian atas dan objek pertama dideklarasikan. Itu tempat Anda mendeklarasikan nomor versi, pengenal bundel, dll. Jika Anda telah mengeluarkan aplikasi, mungkin tampilannya sedikit berbeda?
gwalshington
2
Teks apa yang harus diketik jika kami tidak mengumpulkan dan Lokasi data? Kita perlu berbohong: S
Primož Kralj
62

EDIT April 2019 : Anda sekarang harus menambahkan dua kunci ini, karena musim semi 2019 telah dimulai. Perhatikan bahwa NSLocationAlwaysUsageDescriptionsekarang sudah usang (sejak iOS 11) dan telah diganti dengan NSLocationAlwaysAndWhenInUseUsageDescriptiondan NSLocationWhenInUseUsageDescription. Jika Anda ingin mendukung lebih rendah dari iOS 11, Anda harus menggunakan ketiga nilai tersebut.

Singkatnya, Anda harus:

  • Tambahkan NSLocationAlwaysAndWhenInUseUsageDescriptionAND NSLocationWhenInUseUsageDescriptionuntuk iOS 11 dan lebih banyak
  • Dan tambahkan NSLocationAlwaysUsageDescriptionjika Anda ingin mendukung iOS 10 dan kurang
  • Dan akhirnya, Anda dapat menambahkan NSLocationUsageDescriptionjika Anda ingin mendukung iOS 8 dan kurang.


Anda dapat mengirim aplikasi bahkan jika Anda mendapat pesan ini!

Saya baru saja menghadapi masalah yang sama kemarin, bahkan jika aplikasi tidak menggunakan fungsionalitas lokasi. Ini mungkin terkait dengan beberapa kerangka kerja yang termasuk dalam proyek yang memiliki fitur opsional ini.

Saya dapat mengonfirmasi bahwa aplikasi saya telah disetujui walaupun tanpa NSLocationAlwaysUsageDescriptiondan NSLocationWhenInUseUsageDescriptionkunciinfo.plist

Memang, seperti yang dinyatakan Apple dalam surat:

Mulai musim semi 2019, semua aplikasi yang dikirimkan ke App Store yang mengakses data pengguna akan diminta untuk memasukkan string tujuan.

Jadi, satu-satunya hal yang harus dilakukan adalah menambahkan kunci ini (saat ini lebih baik, sehingga Anda tidak akan lupa) dalam proyek Anda sehingga akan dimasukkan dalam pembaruan Anda berikutnya .

Tambahkan saja dua entri baru di Anda info.plist, dengan NSLocationAlwaysUsageDescriptiondan NSLocationWhenInUseUsageDescriptionsebagai kunci dan deskripsi singkat mengapa Anda menggunakannya sebagai nilai (bahkan jika Anda tidak benar-benar menggunakannya ...).

AnthoPak
sumber
2
Dalam hasil pengeditan April 2019 Anda, apakah Anda yakin pembatalannya dibatalkan? Dari apa yang saya lihat NSLocationUsageDescription adalah yang sudah usang. Lihat di sini: developer.apple.com/library/archive/documentation/General/…
apricity
Email yang saya terima dari apel menyebutkan NSLocationAlwaysUsageDescription jadi saya pikir dia telah membalikkannya.
Dror Bar
@apricity @DrorBar Maaf teman, memang saya telah melakukan kesalahan. Itu tidak terbalik tetapi masih ada kesalahan, NSLocationAlwaysUsageDescriptionharus diganti oleh NSLocationAlwaysAndWhenInUseUsageDescriptiondan NSLocationWhenInUseUsageDescription , dan bukan olehNSLocationUsageDescription (seperti yang saya tulis sebelumnya, maaf ...). Saya telah memperbarui jawaban saya untuk menambahkan jumlah proses.
AnthoPak
48

Saya memiliki beberapa aplikasi di toko dan saya mencoba mendistribusikan versi untuk QA dan hal yang sama terjadi di dua Aplikasi yang berbeda. Saya pikir ini adalah kriteria baru untuk menerima unggahan build ke tautan Appstore.

Solusinya sederhana, tambahkan baris berikut dalam file .plist.

<key>NSLocationAlwaysUsageDescription</key>

<string>custom message</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>custom message</string>

PS: Dalam kasus saya belum menggunakan fitur lokasi, tetapi saya menambahkan baris ini untuk mematuhi pedoman menghubungkan Appstore. Btw setelah menerima email itu, saya bisa menguji aplikasi bahkan ketika mereka mengatakan membangun itu memiliki beberapa masalah.

Saya harap ini berhasil untuk kalian.

Vldan
sumber
5
Wow, saya baru saja mendapat ini, menyadari semua orang juga mendapatkan ini juga!
Cameron A. Ellis
kunci pertama telah berubah sekarang<key>NSLocationUsageDescription</key>
Hudi Ilfeld
1
Apakah kita harus mengarsip ulang setelah memperbarui info.plist?
Bishoy Hanna
Apakah saya harus menambah versi bundel atau nomor versi untuk mengunggah biner baru?
Dror Bar
20

Ini persyaratan baru dari apel, bahkan jika Anda tidak menggunakan lokasi. Jika Anda ingin menambahkan izin dalam Xcode, cari "Privasi - Deskripsi Penggunaan Lokasi" dan "Privasi - Lokasi Saat Di Gunakan Deskripsi Penggunaan" dan ketikkan string khusus untuk masing-masing.

masukkan deskripsi gambar di sini

Juan José Ramírez
sumber
1
Di pembaruan aplikasi lain, Apple meminta izin ini juga: "Privasi - Deskripsi Lokasi Selalu Penggunaan"
Juan José Ramírez
2
Jadi jika saya tidak menggunakan fitur-fitur ini, apa yang harus saya tulis di sana, bohong, sesuatu seperti "kumpulkan lokasi untuk penggunaan di masa depan, mungkin"?
Ruslan Shashkov
ya, apel akan menghubungi Anda jika ada pertanyaan
Juan José Ramírez
Saya tidak dapat menemukan Daftar Properti Informasi di xcode saya 10.1, Anda seharusnya menyebutkan di mana menemukannya, saya telah mencari Build Settings baik untuk Target dan Proyek
Awais Nasir
1
Oke Jadi Target-> Info-> Properti Target Kustom ios adalah lokasi yang tepat
Awais Nasir
15

Untuk lebih menyederhanakan Anda dapat menambahkan baris ini di info Anda. Daftar. Kesalahan ini terjadi karena Mulai musim semi 2019, semua aplikasi yang dikirimkan ke App Store yang mengakses data pengguna akan diminta untuk memasukkan string tujuan.

  1. Buka info.plist sebagai kode sumber.
  2. Tambahkan baris-baris berikut dalam daftar Anda

    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
Sachin Nautiyal
sumber
2
Saya harus menghapus spasi ekstra di tag <key> dan kemudian berhasil.
innich
@innich terima kasih telah menunjukkannya, saya telah mengubah jawaban saya.
Sachin Nautiyal
8
## Gunakan kunci ini dalam file info.plist

NSLocationAlwaysUsageDescription Lokasi Anda diperlukan untuk manfaat xyz untuk Anda NSLocationWhenInUseUsageUsageDescription Lokasi Anda diperlukan untuk manfaat xyz untuk Anda

Sumit Sharma
sumber
8

Kami memang menerima email yang sama dan kami tidak menggunakan CoreLocation sama sekali. Setelah pencarian cepat, kami menemukan bahwa Parse SDK dapat menggunakan CoreLocation. Di email Apple, mereka dengan jelas mengatakan:

Jika Anda menggunakan perpustakaan eksternal atau SDK, mereka mungkin merujuk API yang membutuhkan string tujuan.

Itu berarti begitu kode Anda atau Perpustakaan atau SDK lainnya dapat menggunakan CoreLocation, bahkan jika Anda tidak menggunakannya, Anda perlu memberikan deskripsi privasi untuk "When In Use" dan "Always Use".

Ini juga sesuatu yang baru dari Apple dan untuk saat ini hanya peringatan tetapi akan diperlukan mulai musim semi 2019 untuk pengiriman baru.

sebleclerc
sumber
Itu hanya bodoh .... Jika saya tidak menggunakannya, itu bisa membuat orang tidak mengunduh aplikasi saya hanya karena itu. -_-
Mayoul
3
Tidak juga. Lansiran yang meminta Anda untuk menggunakan pelokalan Anda tidak akan ditampilkan kecuali di suatu tempat dalam kode yang CLLocationManager.requestWhenInUseAuthorization()dipanggil. Apple menganalisis setiap kode aplikasi untuk melihat apakah fungsi seperti itu bisa dipanggil. Jika tidak pernah dipanggil, lansiran tidak akan muncul.
sebleclerc
6

Masalah ini terjadi karena Anda belum memasukkan

 <NSLocationAlwaysUsageDescription>

untuk aplikasi Anda. Saya menghadapi masalah yang sama ketika saya mencoba mengirimkan aplikasi saya di AppStore. Setelah aplikasi diproses, saya mendapat email yang sama. Saya baru saja menambahkan deskripsi dan sekarang sudah terselesaikan.

Semoga ini membantu.

Sachin Nautiyal
sumber
Ini membantu saya. Jika Anda menggunakan Lokasi di aplikasi Anda (atau mungkin selalu saja) Anda perlu menambahkan baris ini dan string di bawahnya. <key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
MaylorTaylor
6

Ada beberapa kasus berikut:

NSLocationAlwaysAndWhenInUseUsageDescription (iOS>11)
NSLocationWhenInUseUsageDescription          (iOS>11)
NSLocationAlwaysUsageDescription             (iOS<=10)
NSLocationUsageDescription                   (seems very old, iOS8?)

Apple menyatakan di:

Tambahkan NSLocationWhenInUseUsageDescriptionkunci dan NSLocationAlwaysAndWhenInUseUsageDescriptionkunci ke file Info.plist Anda .

dan:

Jika aplikasi Anda mendukung iOS 10 dan yang lebih lama, tambahkan NSLocationAlwaysUsage

NSLocationUsageDescriptiontampaknya mati, satu-satunya referensi di situs ADC adalah: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

Jadi yang pasti, gunakan dulu 3.

ingconti
sumber
3

Semua jawaban ini memberi tahu Anda cara mematuhi aturan App Store untuk menghindari peringatan, tetapi perbaikan sebenarnya adalah untuk Expo agar Anda dapat menonaktifkan persyaratan SDK mereka untuk Layanan Lokasi kecuali Anda benar-benar menggunakannya - Saya tidak yakin apakah ini bisa jadi.

Calvin
sumber
3

masalah yang sama pada 19 Februari, mendapat email dengan banyak izin yang tidak saya gunakan, saya berasumsi itu dari plugin. Apple mengatakan pada 19 Maret ini adalah persyaratan jadi saya menambahkan ini di info.plst dan mengunggah lagi.

Memang sangat konyol.

Kekuatan Panda
sumber
2
Lebih banyak komentar ...?
Steve
3

Saya juga menghadapi masalah yang sama tetapi setelah 27 jam, saya menerima email tentang disetujui bahkan saya tidak melakukan apa pun. Jadi tunggu sekitar 24 jam daripada melakukan semua proses ini lagi.

Abdul Qayum
sumber
1
Ya, itu bug!
Danh Huynh
2

Saya <key>NSLocationWhenInUseUsageDescription </key> bukannya <key>NSLocationWhenInUseUsageDescription</key>

pastikan untuk menghapus spasi spasi tambahan

Michael van de Waeter
sumber
2

Tinjau email yang Anda terima dari ** App Store Connect **

Identifikasi Kunci yang Hilang masukkan deskripsi gambar di sini

Instruksi

  1. Buka file info.plist.

  2. Tambahkan dan cari kunci yang hilang dari opsi yang disediakan (mis. Kontak = Privasi - Deskripsi Penggunaan Kontak)

  3. Tambahkan Deskripsi Penggunaan:

$ (PRODUCT_NAME) membutuhkan akses Kontak untuk "Berikan Alasannya Di Sini".

Contoh:

Zeus
sumber
1
Pak saya mendapat kesalahan yang sama tetapi mengapa menambahkan ke info.plist sebenarnya saya tidak menggunakan fitur kontak di aplikasi saya jadi mengapa kita perlu menambahkannya?
Kapil soni
@Kapilsoni Pastikan Anda tidak mengakses satu atau lebih API yang memiliki akses ke data pengguna yang sensitif
Zeus
1
: Pak, saya hanya menggunakan kamera dan lokasi di aplikasi saya?
Kapil soni
2

Dengan Xcode 11 salin kunci NSLocationAlwaysUsageDescriptiondan tambahkan ini ke Info-> Custom iOS Target Properties-> Klik +di kiri bawah tab ini dan sebagai nilai masukkan semacam deskripsi seperti This app requires location access to function properly..

Daniel Danielecki
sumber
2

"String Tujuan Yang Hilang dalam File Info.plist. Kode aplikasi Anda merujuk satu atau lebih API yang mengakses data pengguna yang sensitif. File Info.plist aplikasi harus berisi kunci NSLocationAlwaysUsageDescription dengan string purpose yang menghadap pengguna yang menjelaskan dengan jelas dan sepenuhnya mengapa aplikasi Anda perlu menjelaskan. Mulai musim semi 2019, semua aplikasi yang dikirimkan ke App Store yang mengakses data pengguna akan diminta untuk memasukkan string tujuan. Jika Anda menggunakan perpustakaan eksternal atau SDK, mereka dapat mereferensikan API yang membutuhkan string tujuan. mungkin tidak menggunakan API ini, string tujuan masih diperlukan. Anda dapat menghubungi pengembang perpustakaan atau SDK dan meminta mereka merilis versi kode mereka yang tidak mengandung API.

Buka info.plist sebagai kode sumber.
Tambahkan baris-baris berikut dalam daftar Anda

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
Supriya
sumber
1

Aplikasi saya juga mengerti, dan saya tidak melakukan apa-apa selain itu bisa berjalan dengan baik, lain kali saya pikir harus menambahkan kunci seperti itu di plist, cukup lakukan beberapa deskripsi

liunianhuaguoyanxi
sumber
1

Jawaban singkat untuk masalah di atas -

NSLocationAlwaysUsageDescription harus diperbarui dengan uraian berikut dalam file Info.plist

{Nama Aplikasi Anda} membutuhkan akses ke lokasi untuk menyarankan zona wabah demam berdarah.

Soman Dubey
sumber
0

Dalam kasus kami, kami menggunakan NSLocationWhenInUseUsageDescriptiondi aplikasi kami, tetapi tidak NSLocationAlwaysUsageDescription.

Membaca dari komentar di sini (terima kasih matt-oakes), sepertinyaNSLocationAlwaysUsageDescription sedang digunakan oleh salah satu kerangka kerja ketergantungan yang kami gunakan.

Menjalankan aplikasi kami ini tidak menunjukkan modal izin NSLocationAlwaysUsageDescription yang sebenarnya, jadi sepertinya hanya menangani ini di latar belakang.

Jadi secara ringkas, menambahkan NSLocationAlwaysUsageDescriptionke Info.plist memperbaiki email peringatan, dan tidak mengubah perilaku apa pun di aplikasi 👍🏻

Harry Bloom
sumber