Appstore bağlantı hatası: Info.plist Dosyasında Amaç Dize Eksik


154

Uygulamamı incelenmek üzere App Store Connect'e gönderdim. Uygulama hala inceleniyor olsa da, bir hatayı düzeltmem gerektiğini bildiren bir e-posta aldım. Mesajın içeriği:

Sayın Geliştirici,

XXXXX uygulamanız için yakın zamanda yapılan bir teslimatta bir veya daha fazla sorun belirledik. Teslimatınız başarılı oldu, ancak bir sonraki teslimatınızda aşağıdaki sorunları düzeltmek isteyebilirsiniz:

"Info.plist Dosyasında Amaç Dize Eksik. Uygulamanızın kodu, hassas kullanıcı verilerine erişen bir veya daha fazla API'ya başvuruyor. Uygulamanın Info.plist dosyası, uygulamanızın neden gerekli olduğunu açıkça ve tamamen açıklayan, kullanıcı odaklı bir amaç dizesi içeren bir NSLocationAlwaysUsageDescription anahtarı içermelidir. 2019 ilkbaharından başlayarak, App Store'a gönderilen ve kullanıcı verilerine erişen tüm uygulamaların bir amaç dizesi içermesi gerekir. Harici kitaplıklar veya SDK'lar kullanıyorsanız, amaç dizesi gerektiren API'lara başvurabilirler. kitaplık veya SDK geliştiricisiyle iletişim kurabilir ve kodlarının API'ları içermeyen bir sürümünü yayınlamalarını isteyebilirsiniz.

Sorunları düzelttikten sonra, iTunes Connect'e yeni bir ikili dosya yüklemek için Xcode veya Uygulama Yükleyici'yi kullanabilirsiniz.

Saygılarımla,

App Store Ekibi

Uygulamam tamamen Expo ile oluşturulmuştur ve Info.plist'e nasıl erişileceğini ve değiştirileceğini bilmiyorum.

Herhangi bir fikir?


3
Uygulamamda Konum Hizmetlerini bile kullanmadığım göz önüne alındığında, en son sürümle aynı sorunu yaşıyorum. Ve Apple'ın bu değişiklik hakkında resmi bir belgesi yok.
huong

3
+1 2 gün önce aynı uygulama için bir sürüm yaptı ve her şey yolunda. 2 gün sonra, yeni bir sürüm yapmak için birkaç satır kod değiştirdi (daha fazla Pod veya bunun gibi bir şey eklemedim) ve bu mesajı aldım
Tiago Ornelas

2
Aynı sorunu yaşadık. Onay sürecinde bir hata olduğundan şüpheleniyorum (umarım). Hafta sonu için görmezden geleceğim ve umarım Pazartesi günü düzeltilecek.
AMB

2
Bizim App gerçekten Konum Servisleri Her Zaman gerek olmasa da ben şimdi tam olarak aynı sorunla karşı karşıya. Sadece zaten bir amaç dizesi olan NSLocationWhenInUseUsageDescription gerekiyor. Muhtemelen bu sadece Apple'ın sonundaki bir aksaklık mı?
gece

3
Ve Apple modasında, düzeltmek için e-postada sağladıkları bağlantı koptu.
gwalshington

Yanıtlar:


45

Expo kullanıyorsanız, app.json'a şu şekilde infoPlist ekleyerek çözmek ekleyebilirsiniz:

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

Expo Dokümanları


25
Aslında "Apple'ı yatıştırmak için bir mesaj" DEĞİLDİR , ancak kullanıcıya bu durumda kullanıcının oluşturduğu verilerle (konum) ne yaptığınızı bildirmek. Bu gizlilikle ilgili bir konudur ve uygulama kullanıcılarınız için adil olmanın iyi olduğunu düşünüyorum.
Lookaji

4
Anladım! Onu bırakmaya cazip gelebilecek yeni başlayanlar düşünüyordum! Ben huysuz ses istemiyordu :) şerefe!
Lookaji

@gwalshington app.json'da herhangi bir expo nesnem yok
Heemanshu Bhalla

@HeemanshuBhalla hmm, neden olduğundan emin değilim. Benim app.json, üstte ve ilk nesne ilan edildi. Sürüm numarasını, paket tanımlayıcıyı vb. Bildirdiğiniz yer. Uygulamayı çıkardıysanız, belki biraz farklı görünüyor?
gwalshington

2
Veri toplamazsak ve Konum verileri yazmazsak hangi metin yazılır? Bir yalan
uydurmalıyız

62

Nisan 2019 DÜZENLE : 2019 baharı başladığı için şimdi bu iki anahtarı eklemelisiniz. Not NSLocationAlwaysUsageDescriptionartık (IOS 11 beri) kaldırılmıştır ve ile değiştirilmiştir NSLocationAlwaysAndWhenInUseUsageDescriptionve NSLocationWhenInUseUsageDescription. İOS 11'den daha düşük bir sürümü desteklemek istiyorsanız, üç değeri kullanmanız gerekir.

Özetlemek gerekirse:

  • İOS 11 ve daha fazlası için NSLocationAlwaysAndWhenInUseUsageDescriptionAND ekleyinNSLocationWhenInUseUsageDescription
  • Ve NSLocationAlwaysUsageDescriptioniOS 10 ve daha azını desteklemek istiyorsanız ekleyin
  • Ve son olarak, NSLocationUsageDescriptioniOS 8 ve daha azını desteklemek istiyorsanız ekleyebilirsiniz .


Bu mesajı alsanız bile uygulamanızı gönderebilirsiniz!

Uygulama konum işlevini kullanmasa bile, dün aynı sorunla karşılaştım. Bu isteğe bağlı özelliğe sahip olan projede yer alan bazı çerçevelerle ilgili olabilir.

UygulamamınNSLocationAlwaysUsageDescription ve olmadan onaylandığını onaylayabilirim.NSLocationWhenInUseUsageDescription tuşuinfo.plist

Aslında, Apple'ın postada belirttiği gibi:

2019 ilkbaharından itibaren App Store'a gönderilen ve kullanıcı verilerine erişen tüm uygulamaların bir amaç dizesi içermesi gerekir.

Yapmanız gereken tek şey bu anahtarı (şu anda daha iyi, böylece unutamayacağınız şekilde) eklemektir, böylece bir sonraki güncellemenize dahil edilir .

Tek yapmanız gereken iki yeni girişler eklemek info.plistile, NSLocationAlwaysUsageDescriptionve NSLocationWhenInUseUsageDescriptiontuşları ve (gerçekten ... bunları kullanmak bile) değeri olarak bunları kullanmak neden kısa bir açıklama gibi.


2
Nisan 2019 düzenlemenizde, kullanımdan kaldırmanın geri alınmadığından emin misiniz? Gördüğüm kadarıyla NSLocationUsageDescription kullanımdan kaldırılmış olanıdır. Burada bakıyorum: developer.apple.com/library/archive/documentation/General/…
apricity

Apple'dan aldığım e-posta NSLocationAlwaysUsageDescription'den bahsediyor, bu yüzden tersine döndüğünü düşünüyorum.
Dror Bar

@apricity @DrorBar Üzgünüm çocuklar, gerçekten bir hata yapmıştım. Bu ters ama bir hata hala orada değildi, NSLocationAlwaysUsageDescriptiondeğiştirilmesi gerektiğini NSLocationAlwaysAndWhenInUseUsageDescriptionve NSLocationWhenInUseUsageDescription ve vermeyerek NSLocationUsageDescription(Ben daha önce ... üzgünüm, yazdığı gibi). Sürecin bir özetini eklemek için cevabımı güncelledim.
AnthoPak

48

Mağazada bazı uygulamalarım var ve KG için bir sürüm dağıtmaya çalıştım ve aynı şey iki farklı Uygulamada oldu. Bence bu, Appstore Connect'e yapılan yüklemeleri kabul etmek için yeni bir kriter.

Çözüm basit, aşağıdaki satırları .plist dosyasına ekleyin.

<key>NSLocationAlwaysUsageDescription</key>

<string>custom message</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>custom message</string>

Not: Benim durumumda herhangi bir konum özelliği kullanmadım, ancak Appstore bağlantı yönergelerine uymak için bu satırları ekledim. Btw sonra bu e-postayı aldıktan sonra, bazı sorunlar vardı inşa derken bile uygulamayı test edebilirsiniz.

Umarım bu iş sizler için.


5
Vay canına, bunu aldım, herkesin bunu da aldığını fark ettim!
Cameron A. Ellis

ilk anahtar şu an için değişti<key>NSLocationUsageDescription</key>
Hudi Ilfeld

1
İnfo.plist'i güncelledikten sonra yeniden arşivlememiz gerekiyor mu?
Bishoy Hanna

Yeni bir ikili dosya yüklemek için paket sürümünü veya sürüm numarasını artırmam gerekir mi?
Dror Bar

20

Konum kullanmasanız bile, elmanın yeni bir gereksinimi. İzinleri Xcode'a eklemek istiyorsanız, "Gizlilik - Konum Kullanım Açıklaması" ve "Gizlilik - Kullanımdayken Konum Kullanım Açıklaması" ifadelerini arayın ve her biri için özel bir dize yazın.

resim açıklamasını buraya girin


1
Diğer uygulama güncellemelerinde Apple da bu izni istedi: "Gizlilik - Konum Her Zaman Kullanım Açıklaması"
Juan José Ramírez

2
Eğer bu özellikleri kullanmazsam, orada yazmam gereken şey, bir yalan, "gelecekteki kullanım için yer topla, belki" gibi bir şey?
Ruslan Shashkov

evet, soruları varsa elma sana ulaşacak
Juan José Ramírez

Xcode 10.1'de Bilgi Özellik Listesini bulamıyorum , nerede bulacağınızı söylemeliydiniz, Hem Hedefler hem de Proje için Yapı Ayarlarını aradım
Awais Nasir

1
Tamam Hedefler-> Bilgi-> Özel ios Hedef Özellikleri tam
konumuydu

15

Daha basitleştirmek için bu satırları info.plist'e ekleyebilirsiniz. Bu hata, 2019 baharından itibaren App Store'a gönderilen ve kullanıcı verilerine erişen tüm uygulamaların bir amaç dizesi içermesi gerekeceği için geliyor.

  1. İnfo.plist dosyasını kaynak kodu olarak açın.
  2. Aşağıdaki satırları plistinize ekleyin

    <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>

2
<key> etiketlerindeki fazladan boşlukları kaldırmak zorunda kaldım ve işe yaradı.
innich

@innich, işaret ettiğiniz için teşekkür ederim, cevabımı değiştirdim.
Sachin Nautiyal

8
## info.plist dosyasında bu anahtarı kullanın

NSLocationAlwaysUsageDescription Konumunuz sizin için xyz avantajları için gereklidir NSLocationWhenInUseUsageDescription Konumunuz sizin için xyz avantajları için gereklidir


8

Aynı e-postayı aldık ve CoreLocation'ı hiç kullanmıyoruz. Hızlı bir aramadan sonra, Parse SDK'nın CoreLocation'ı kullanabileceğini keşfettik. Apple'ın e-postasında açıkça şunu söylüyorlar:

Harici kitaplıklar veya SDK'lar kullanıyorsanız, bunlar amaç dizesi gerektiren API'lara başvurabilir.

Bu, kodunuzun veya diğer herhangi bir Kütüphane veya SDK'nın CoreLocation'ı kullanabileceği dakika anlamına gelir, bunu kullanmasanız bile "Kullanımda" ve "Her Zaman Kullan" için gizlilik açıklaması sağlamanız gerekir.

Aynı zamanda Apple'dan yeni bir şey ve şimdilik sadece bir uyarı ama yeni başvurular için Bahar 2019'dan itibaren gerekli olacak.


Sadece aptal .... Eğer kullanmıyorsam, halklar sadece bu yüzden benim app indirmek dont yapabilir. -_-
Mayoul

3
Pek sayılmaz. Yerelleştirmenizi kullanmanızı isteyen uyarı, kodun herhangi bir CLLocationManager.requestWhenInUseAuthorization()yerinde çağrılmadığı sürece gösterilmez . Apple, böyle bir işlevin çağrılıp çağrılamayacağını görmek için her uygulama kodunu analiz etti. Hiç çağrılmazsa, uyarı görünmez.
sebleclerc

6

Bu sorun ekleniyor, çünkü eklemediniz

 <NSLocationAlwaysUsageDescription>

uygulamanız için. Uygulamamı AppStore'da göndermeye çalıştığımda da aynı sorunla karşılaştım. Uygulama işlendikten sonra aynı postayı aldım. Ben sadece açıklama ekledim ve şimdi çözüldü.

Bu yardımcı olur umarım.


Bu bana yardımcı oldu. Uygulamanızda Konum kullanıyorsanız (veya belki de her zaman) bu satırı ve altına bir dize eklemeniz gerekir. <key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
MaylorTaylor

6

Aşağıdaki durumlar vardır:

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

Apple şunları belirtiyor:

Ekle NSLocationWhenInUseUsageDescriptiontuşuna ve NSLocationAlwaysAndWhenInUseUsageDescriptionsizin için anahtar Info.plist dosyasında.

ve:

Uygulamanız iOS 10 ve önceki sürümlerini destekliyorsa, NSLocationAlwaysUsage

NSLocationUsageDescriptionÖlü gibi görünüyor, ADC sitesindeki tek ref: https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

Emin olmak için ilk önce 3'ü kullanın.


3

Bu yanıtların tümü, uyarıyı önlemek için App Store kurallarına nasıl uyulacağını söyler, ancak gerçek düzeltme, Expo'nun Konum Hizmetleri için SDK gereksinimlerini devre dışı bırakmanıza izin vermenizdir. mümkün.


3

19 Şubat'ta aynı sorun, ben kullanmıyorum izinleri bir grup bir e-posta var, onlar eklentileri olduğunu varsayalım. Apple 19 Mart'ta bir gereklilik olduğunu söylüyor, bu yüzden bunları info.plst'e ekleyip tekrar yüklüyorum.

Gerçekten çok aptalca.


2
Daha bir yorum gerçekten ...?
Steve

3

Aynı sorunla karşı karşıyayım ama 27 saat sonra hiçbir şey yapmadım bile onaylanan e-postayı aldım. Bu işlemi tekrar yapmak yerine yaklaşık 24 saat bekleyin.


1
Evet, bu bir hata!
Danh Huynh

2

sahiptim <key>NSLocationWhenInUseUsageDescription </key> yerine <key>NSLocationWhenInUseUsageDescription</key>

arka boşluğu kaldırdığınızdan emin olun


2

Lütfen ** App Store Connect ** 'den aldığınız e-postayı inceleyin

Eksik Anahtarı Tanımlama resim açıklamasını buraya girin

Talimatlar

  1. İnfo.plist dosyasını açın.

  2. Verilen seçeneklerden eksik anahtarı ekleyin ve arayın (ör. Rehber = Privacy - Contacts Usage Description)

  3. Kullanım Açıklaması Ekle:

$ (PRODUCT_NAME), "Nedeni Burada Sağlayın" için Kişiler erişimine ihtiyaç duyuyor.

Misal:


1
efendim ben de aynı hatayı aldım ama neden info.plist eklemek im gerçekten benim app kişi özelliği kullanılmıyor bu yüzden neden eklememiz gerekiyor?
Kapil soni

@Kapilsoni Lütfen hassas kullanıcı verilerine erişimi olan bir veya daha fazla API'ya erişmediğinizden emin olun
Zeus

1
: efendim benim app sadece kamera ve konum kullandınız?
Kapil soni

2

Xcode 11 ile anahtarı kopyalayın NSLocationAlwaysUsageDescriptionve bunu Info-> Custom iOS Target Properties-> +sekmesine ekleyin ve bu sekmenin sol alt kısmına tıklayın ve değer olarak bir tür açıklama ekleyin This app requires location access to function properly..


2

"Info.plist Dosyasında Amaç Dize Eksik. Uygulamanızın kodu, hassas kullanıcı verilerine erişen bir veya daha fazla API'ya başvuruyor. Uygulamanın Info.plist dosyası, uygulamanızın neden gerekli olduğunu açıkça ve tamamen açıklayan, kullanıcı odaklı bir amaç dizesi içeren bir NSLocationAlwaysUsageDescription anahtarı içermelidir. 2019 ilkbaharından itibaren, App Store'a gönderilen ve kullanıcı verilerine erişen tüm uygulamaların bir amaç dizesi içermesi gerekecektir. Harici kitaplıklar veya SDK'lar kullanıyorsanız, amaç dizesi gerektiren API'lara başvurabilirler. kitaplık veya SDK geliştiricisiyle iletişime geçebilir ve kodlarının API'ları içermeyen bir sürümünü yayınlamalarını isteyebilirsiniz.

İnfo.plist dosyasını kaynak kodu olarak açın.
Aşağıdaki satırları plistinize ekleyin

<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>

1

Benim app de var , ve ben bu konuda hiçbir şey yapmam ama iyi çalışabilir, bir dahaki sefere plist böyle bir anahtar eklemek gerektiğini düşünüyorum, sadece bazı açıklama yapmak


1

Yukarıdaki soruna kısa bir cevap -

NSLocationAlwaysUsageDescription Info.plist dosyasında aşağıdaki açıklama ile güncellenmelidir

{Uygulama Adınız}, dang salgını bölgeleri önermek için konuma erişim gerektirir.


0

Bizim durumumuzda, NSLocationWhenInUseUsageDescriptionbizim app kullanıyorduk , ama kullanmadık NSLocationAlwaysUsageDescription.

Buradaki yorumlardan okuma (teşekkürler matt-oakes), benziyorNSLocationAlwaysUsageDescription kullandığımız bağımlılık çerçevelerinden biri tarafından kullanılıyor .

Bizim app çalışan gerçek NSLocationAlwaysUsageDescription izin modal göstermez, bu yüzden sadece arka planda işlemek için görünüyor.

Özetle, NSLocationAlwaysUsageDescriptionInfo.plist'e eklemek uyarı e-postasını düzeltti ve uygulamada herhangi bir davranış değiştirmedi 👍🏻

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.