Eksik kullanım açıklamaları nedeniyle uygulama reddedildi (Xcode8)


92

Bu yüzden bugün bu postayı aldım, uygulamamın en son sürümünün bazı eksik kullanım açıklamaları nedeniyle iTunes Connect tarafından reddedildiğini söyledim. Tam olarak:

Bu uygulama, bir kullanım açıklaması olmadan gizlilik açısından hassas verilere erişmeye çalışır. Uygulamanın Info.plist'i, kullanıcıya uygulamanın bu verileri nasıl kullandığını açıklayan bir dize değerine sahip bir NSContactsUsageDescription anahtarı içermelidir.

Bu uygulama, bir kullanım açıklaması olmadan gizlilik açısından hassas verilere erişmeye çalışır. Uygulamanın Info.plist'i, kullanıcıya uygulamanın bu verileri nasıl kullandığını açıklayan bir dize değerine sahip bir NSCalendarsUsageDescription anahtarı içermelidir.

Bu uygulama, bir kullanım açıklaması olmadan gizlilik açısından hassas verilere erişmeye çalışır. Uygulamanın Info.plist'i, kullanıcıya uygulamanın bu verileri nasıl kullandığını açıklayan bir dize değerine sahip bir NSPhotoLibraryUsageDescription anahtarı içermelidir.

Bu uygulama, bir kullanım açıklaması olmadan gizlilik açısından hassas verilere erişmeye çalışır. Uygulamanın Info.plist'i, kullanıcıya uygulamanın bu verileri nasıl kullandığını açıklayan bir dize değerine sahip bir NSBluetoothPeripheralUsageDescription anahtarı içermelidir.

Bu uygulama, bir kullanım açıklaması olmadan gizlilik açısından hassas verilere erişmeye çalışır. Uygulamanın Info.plist'i, kullanıcıya uygulamanın bu verileri nasıl kullandığını açıklayan bir dize değerine sahip bir NSMicrophoneUsageDescription anahtarı içermelidir.

Bu uygulama, bir kullanım açıklaması olmadan gizlilik açısından hassas verilere erişmeye çalışır. Uygulamanın Info.plist'i, kullanıcıya uygulamanın bu verileri nasıl kullandığını açıklayan bir dize değerine sahip bir NSMotionUsageDescription anahtarı içermelidir.

Bu sorunlar düzeltildikten sonra, düzeltilmiş ikili dosyayı yeniden gönderebilirsiniz.

Bunların iOS 10'da zorunlu hale geldiğini anladım, ancak tek sorun uygulamamın bunlardan herhangi birine erişmek için izin istememesi ... Açıklamanın yalnızca gerçekten bir izin istediyseniz zorunlu olduğunu düşündüm?

Bunun nedeni, bağımlılıklarımdan birinin (Cocoapods) bu izinleri istemek için bazı kodlar içermesi olabilir mi? Veya kullanıcı takvimini, kişileri vb. Görmek istemesem bile bu açıklamalar zorunlu mu?


3
Tecrübelerime göre - bunlar yalnızca izinleri talep ediyorsanız gereklidir. Belki de bunu sizin için bir bağımlılık yapıyor. Ayrıca, bu izinlerin TÜMÜ, özellikle uygulamanız basit bir yapılacaklar listesi ise balık kokuyor. Belki bazı bağımlılıklar kimlik avına gidiyor?
Eimantas

Kendinizi PodFileve kullandığınız kitaplıkların listesini gönderebilir misiniz (bazı dış kokoları kullanıyorsanız)?
Julien QUERE

Öyleydi github.com/nickoneill/PermissionScope .. Yardımlarınız için teşekkürler!
KimHafr

ُ açıklaması ve kullanımı: iosdevcenters.blogspot.com/2016/09/…
Saeid

bende tam olarak aynı sorun var ve sanırım bunun sebebi: pod 'ReactNativePermissions',: path => '../node_modules/react-native-permissions'
luky

Yanıtlar:


33

Açıklamalar, sizin veya erişim girişimine karşı bağladığınız herhangi bir çerçeve için zorunludur. Hatalar, bir kullanım açıklaması sağlanmadıysa içeriğe erişme girişimi üzerine oluşturulur; bu nedenle, bu hataları alıyorsanız, uygulamanızın bunları istemesi gerekir. Uygulamanızın veya çerçevelerinin neden bunları gerektirdiğini keşfetmeli ve uygulamanızın info.plist'ine uygun kullanım açıklamaları eklemelisiniz.

Daha da iyisi, erişime ihtiyacınız yoksa, bunu istememenin bir yolu olup olmadığına bakın (veya gereksiz yere bunu yapan çerçeveleri kullanın).


11
Tüm bu izinleri isteyen bir kütüphane ekleyeceğimi hayatım boyunca hayal edemedim. : Ben bulduğumda Ama çok açıktı github.com/nickoneill/PermissionScope
KimHafr

1
Evet, bunun gibi bir çerçeve harika bir fikir olmayabilir çünkü uygulamanızın ihtiyaç duyduğundan çok daha fazla izin beyan etmesine neden olur.
Matthew Seaman

3
Sanırım bu bir özellikten ziyade bir hata. İTunes Connect uygulamanızda bir yerde birinin izin isteyebileceğini tespit ediyor. Bu durumda, permissionscope'daki kodun bir kısmını gerçekten çağırmanız durumunda, bunların tümü için kullanım açıklamalarını doldurmanız gerekir. Çerçeveyi de seviyorum ve onu değiştirmeye hazır değilim. Bu yüzden bazı sahte metinler doldurdum ve uygulama onaylandı. Bunu AppStore'a gönderdim, bu yüzden umarım iyi olur :-)
KimHafr

15
Hangi çerçevenin bu izinleri istediğini saptamanın bir yoluna mı ihtiyacınız var?
neobie

5
Neobie - izinleri isteyen çerçeveleri nasıl tespit edebileceğinizi buldunuz mu?
Nitesh

140

iOS 10 , info.plist'e izin eklemelidir, sadece bu BLOG'u inceleyin: - settings-in-ios-10, tüm fikri anladınız .

İzni ekleyin içinde Info.plist sizin dosya tabanına hata günlüğüne.

Not: Dize değerine izin için uygun nedeni yazın, aksi takdirde apple uygulamayı tekrar reddeder.

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>

NSBluetoothPeripheralUsageAçıklama

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

görüntü açıklamasını buraya girin


"$ (PRODUCT_NAME)" yerine "$ {PRODUCT_NAME}" olması gerekmez mi? "{}" onun yerine "()".
backslash-f

@ backslash-f, Lütfen yeni projede mevcut plist dosyasını kontrol edin ve olmalıdır $(PRODUCT_NAME). Varsayılan özelliği Bundle nameplist dosyasındaki gibi görebilirsiniz .
Jayesh Thanki

1
Lütfen bunun gibi genel bir açıklamanın artık uygulama mağazası onayı almanızı sağlamayacağını unutmayın. Benzer açıklamalar için iki kez çıldırmıştık. Bir insanın gerçek kullanımını tanımlamalısınız
O'Rooney

9

İnfo.plistinize aşağıdaki gibi ekleyebilirsiniz:

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

vb.

Umut birisine yardım edecek ...


6

Aynı sorunu yaşadım ve bağlantı kurduğunuz herhangi bir çerçevede bu izni isteyen bir kod varsa (uygulamanız hiçbir zaman istemese bile), kullanım açıklamalarının gerekli olduğu anlaşılıyor . Ancak testime göre, talep etmezseniz, uygulamanızın izinler listesinde görünmeyecekler.


3

Takvim: Anahtar: Gizlilik - Takvimler Kullanım Açıklama
Değer: $ (PRODUCT_NAME) takvim etkinlikleri

Hatırlatma: Anahtar: Gizlilik - Hatırlatıcılar Kullanım Açıklama
Değer: $ (PRODUCT_NAME) hatırlatıcı kullanımı

İlgili Kişi : Anahtar: Gizlilik - Kişiler Kullanım Açıklama
Değer: $ (PRODUCT_NAME) kişi kullanımı

Fotoğraf: Anahtar: Gizlilik - Fotoğraf Kitaplığı Kullanım Açıklama
Değer: $ (PRODUCT_NAME) fotoğraf kullanımı

Bluetooth Paylaşımı: Anahtar: Gizlilik - Bluetooth Çevre Birimi Kullanımı Açıklama
Değer: $ (PRODUCT_NAME) Bluetooth Çevre Birimi kullanımı

Mikrofon: Anahtar: Gizlilik - Mikrofon Kullanımı Açıklama
Değer: $ (PRODUCT_NAME) mikrofon kullanımı

Kamera: Anahtar: Gizlilik - Kamera Kullanımı Açıklama
Değer: $ (PRODUCT_NAME) kamera kullanımı

Konum: Anahtar: Gizlilik - Konum Her Zaman Kullanım Açıklama
Değer: $ (PRODUCT_NAME) konum kullanımı

Anahtar: Gizlilik - Kullanım Sırasında Konum Kullanım Açıklama
Değer: $ (PRODUCT_NAME) konum kullanımı

Heath: Anahtar: Gizlilik - Sağlık Paylaşımı Kullanım Açıklama
Değer: $ (PRODUCT_NAME) sağlık paylaşımı kullanımı

Anahtar: Gizlilik - Sistem Durumu Güncellemesi Kullanım Açıklama
Değer: $ (PRODUCT_NAME) sağlık güncellemesi kullanımı

HomeKit: Anahtar: Gizlilik - HomeKit Kullanım Açıklama
Değer: $ (PRODUCT_NAME) ev kiti kullanımı

Ortam Kitaplığı: Anahtar: Gizlilik - Ortam Kitaplığı Kullanım Açıklama
Değer: $ (PRODUCT_NAME) ortam kitaplığı kullanımı

Hareket: Anahtar: Gizlilik - Hareket Kullanımı Açıklama
Değer: $ (PRODUCT_NAME) hareket kullanımı

Konuşma Tanıma: Anahtar: Gizlilik - Konuşma Tanıma Kullanım Açıklama
Değer: $ (PRODUCT_NAME) konuşma kullanımı

SiriKit: Anahtar: Gizlilik - Siri Kullanım Açıklama
Değer: $ (PRODUCT_NAME) siri kullanımı

TV Sağlayıcı: Anahtar: Gizlilik - TV Sağlayıcısı Kullanım Açıklama
Değer: $ (PRODUCT_NAME) tvProvider kullanımı


0

Neden birdenbire uygulamanızın tüm bu izin ayarlarına sahip olduğunu merak eden herkes için, CocoaPods veya Carthage olabilir - tüm bu izinlere kancalar koydular. Uygulamamı, kapsamlı bir Cocoapods (ve bağımlılıkları) kurulumuna sahip olan cordova-eklenti-firebasex'i kullanacak şekilde yükselttim. Projenizin kök dizinine bir İzinlerConfiguration.xcconfig koyarak projenize cocoapod'ları yüklemeden ÖNCE bu izinleri kapatabilirsiniz - bununla ilgili daha fazla bilgiyi buradan okuyabilirsiniz: https://cocoapods.org/pods/Permission#installation

Info.plist dosyasında eksik olan 7 izin anahtarı / dizesi ile uygulamamın yeni sürümü reddedildiğinde bu durum beni şaşırttı. Daha sonra, uygulamamın bu izinlerden herhangi birine ihtiyacı olmadığı veya kullanmadığı (asla sahip olmadığı) için buna neyin sebep olduğunu bulmak için projeme girmem gerekti.

Var olabilir, ancak şu anda kapsül entegrasyonundan sonra izinleri kaldırmanın bir yolunu bulamıyorum ... projemi yeniden başlatmadan bunu nasıl yapacağımı araştırmam gerekecek.

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.