Ứng dụng bị từ chối do thiếu mô tả sử dụng (Xcode8)


91

Vì vậy, tôi nhận được thư này hôm nay nói rằng bản dựng mới nhất của ứng dụng của tôi đã bị iTunes Connect từ chối do thiếu một số mô tả sử dụng. Chinh xac:

Ứng dụng này cố gắng truy cập dữ liệu nhạy cảm về quyền riêng tư mà không có mô tả sử dụng. Info.plist của ứng dụng phải chứa khóa NSContactsUsageDescription với giá trị chuỗi giải thích cho người dùng cách ứng dụng sử dụng dữ liệu này.

Ứng dụng này cố gắng truy cập dữ liệu nhạy cảm về quyền riêng tư mà không có mô tả sử dụng. Info.plist của ứng dụng phải chứa khóa NSCalendarsUsageDescription với giá trị chuỗi giải thích cho người dùng cách ứng dụng sử dụng dữ liệu này.

Ứng dụng này cố gắng truy cập dữ liệu nhạy cảm về quyền riêng tư mà không có mô tả sử dụng. Info.plist của ứng dụng phải chứa khóa NSPhotoLibraryUsageDescription với giá trị chuỗi giải thích cho người dùng cách ứng dụng sử dụng dữ liệu này.

Ứng dụng này cố gắng truy cập dữ liệu nhạy cảm về quyền riêng tư mà không có mô tả sử dụng. Info.plist của ứng dụng phải chứa khóa NSBl BluetoothPeripheralUsageDescription với giá trị chuỗi giải thích cho người dùng cách ứng dụng sử dụng dữ liệu này.

Ứng dụng này cố gắng truy cập dữ liệu nhạy cảm về quyền riêng tư mà không có mô tả sử dụng. Info.plist của ứng dụng phải chứa khóa NSMicrophoneUsageDescription với giá trị chuỗi giải thích cho người dùng cách ứng dụng sử dụng dữ liệu này.

Ứng dụng này cố gắng truy cập dữ liệu nhạy cảm về quyền riêng tư mà không có mô tả sử dụng. Info.plist của ứng dụng phải chứa khóa NSMotionUsageDescription với giá trị chuỗi giải thích cho người dùng cách ứng dụng sử dụng dữ liệu này.

Khi những vấn đề này đã được khắc phục, bạn có thể phân phối lại tệp nhị phân đã sửa.

Tôi phát hiện ra rằng những điều này đã trở thành bắt buộc với iOS 10, nhưng vấn đề duy nhất là ứng dụng của tôi không yêu cầu quyền truy cập bất kỳ thứ nào trong số này .. Tôi nghĩ chỉ mô tả là bắt buộc nếu bạn thực sự yêu cầu một quyền?

Có phải vì một trong những phụ thuộc của tôi (Cocoapods) có thể chứa một số mã để yêu cầu các quyền này không? Hay những mô tả này là bắt buộc ngay cả khi tôi không bao giờ yêu cầu xem lịch, danh bạ, v.v. của người dùng?


3
Theo kinh nghiệm của tôi - những điều này chỉ cần thiết nếu bạn đang yêu cầu quyền. Vì vậy, có thể một số phụ thuộc đang làm điều này cho bạn. Ngoài ra TẤT CẢ các quyền này đều có mùi tanh đặc biệt nếu ứng dụng của bạn là một danh sách việc cần làm đơn giản. Có thể một số phụ thuộc đang lừa đảo?
Eimantas

Bạn có thể đăng của bạn PodFilevà danh sách các thư viện bạn sử dụng (nếu bạn sử dụng một số cocoapod bên ngoài)?
Julien Quere

Đó là github.com/nickoneill/PermissionScope .. Cảm ơn sự giúp đỡ của bạn!
KimHafr

ُ đã giải thích và hiển thị cách sử dụng của anh ấy: iosdevcenters.blogspot.com/2016/09/…
Saeid

i có chính xác cùng một vấn đề và tôi đoán nó được gây ra bởi: pod 'ReactNativePermissions',: path =>' ../node_modules/react-native-permissions'
luky

Câu trả lời:


33

Các mô tả là bắt buộc đối với bất kỳ nội dung nào bạn hoặc bất kỳ khuôn khổ nào bạn liên kết chống lại việc cố gắng truy cập. Các lỗi được tạo ra khi cố gắng truy cập nội dung nếu mô tả sử dụng không được cung cấp, vì vậy nếu bạn gặp các lỗi đó, ứng dụng của bạn phải yêu cầu chúng. Bạn nên khám phá lý do tại sao ứng dụng của bạn hoặc các khuôn khổ của nó yêu cầu những điều này và thêm mô tả sử dụng thích hợp vào info.plist của ứng dụng của bạn.

Hoặc lý tưởng hơn, nếu bạn không cần quyền truy cập, hãy xem có cách nào để không yêu cầu nó (hoặc sử dụng các khung làm việc không cần thiết).


11
Cả đời tôi không thể tưởng tượng rằng tôi sẽ thêm một thư viện yêu cầu tất cả các quyền này. Nhưng nó đã quá rõ ràng khi tôi tìm thấy nó: github.com/nickoneill/PermissionScope
KimHafr

1
Vâng, một khuôn khổ như vậy có thể không phải là một ý tưởng tuyệt vời vì nó khiến ứng dụng của bạn khai báo nhiều quyền hơn mức cần thiết.
Matthew Seaman

3
Tôi đoán đây là một tính năng nhiều hơn sau đó là một lỗi .. iTunes Connect phát hiện rằng một nơi nào đó trong ứng dụng của bạn, ai đó có thể yêu cầu quyền. Trong trường hợp đó, bạn phải điền vào các mô tả sử dụng cho tất cả những thứ này, trong trường hợp bạn thực sự có thể gọi một số mã trong permissionscope. Tôi cũng thích khuôn khổ và tôi chưa sẵn sàng thay thế nó. Vì vậy, tôi đã điền vào một số văn bản không có thật và ứng dụng đã được chấp thuận. Tôi đã gửi nó vào AppStore, vì vậy hy vọng nó sẽ ổn :-)
KimHafr 12/09/16

15
Cần một cách để phát hiện khung công tác nào đang yêu cầu những quyền đó?
neobie

5
Neobie - bạn có tìm thấy cách phát hiện các khuôn khổ yêu cầu quyền không?
Nitesh

140

iOS 10 phải thêm quyền trong info.plist chỉ cần xem lại BLOG này : - settings-in-ios-10 bạn có tất cả ý tưởng.

Thêm quyền vào tệp info.plist dựa trên nhật ký lỗi của bạn .

Lưu ý: Viết lý do thích hợp cho quyền trong giá trị chuỗi, nếu không ứng dụng apple từ chối một lần nữa.

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>

NSBl BluetoothPeri ForeignUsageDescription

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

nhập mô tả hình ảnh ở đây


Nó không phải là "$ {PRODUCT_NAME}" thay vì "$ (PRODUCT_NAME)"? "{}" thay vì "()".
dấu gạch chéo ngược-f

@ backlash-f, Vui lòng kiểm tra tệp plist hiện có trong dự án mới và nó phải như vậy $(PRODUCT_NAME). Bạn có thể thấy thuộc tính mặc định như Bundle nametrong tệp plist.
Jayesh Thanki

1
Xin lưu ý rằng một mô tả chung chung như thế này sẽ không giúp bạn thông qua cửa hàng ứng dụng được nữa. Chúng tôi đã chỉ hai lần cho các mô tả tương tự. Bạn phải mô tả cách sử dụng thực sự của một con người
O'Rooney

9

Bạn có thể thêm vào info.plist của mình như:

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

Vân vân.

Hi vọng sẽ giúp được ai đó ...


6

Tôi gặp vấn đề tương tự và có vẻ như nếu bất kỳ khung nào bạn liên kết có mã yêu cầu quyền này (ngay cả khi ứng dụng của bạn không bao giờ yêu cầu chúng), thì mô tả sử dụng là cần thiết. Nhưng theo thử nghiệm của tôi, nếu bạn không yêu cầu chúng, chúng sẽ không xuất hiện trong danh sách quyền của ứng dụng của bạn.


3

Lịch: Khóa: Bảo mật - Sử dụng lịch
Giá trị mô tả : sự kiện lịch $ (PRODUCT_NAME)

Nhắc nhở: Khóa: Bảo mật - Sử dụng lời nhắc Mô tả
Giá trị: sử dụng lời nhắc $ (PRODUCT_NAME)

Liên hệ : Khóa: Quyền riêng tư - Mô tả Sử dụng Danh bạ
Giá trị: sử dụng liên hệ $ (PRODUCT_NAME)

Ảnh: Khóa: Quyền riêng tư - Sử dụng Thư viện Ảnh
Giá trị: Sử dụng ảnh $ (PRODUCT_NAME)

Chia sẻ qua Bluetooth: Khóa: Bảo mật - Sử dụng thiết bị ngoại vi Bluetooth
Giá trị mô tả : $ (PRODUCT_NAME) Sử dụng thiết bị ngoại vi Bluetooth

Micrô: Khóa: Quyền riêng tư - Cách sử dụng micrô Mô tả
Giá trị: Sử dụng micrô của $ (PRODUCT_NAME)

Máy ảnh: Khóa: Quyền riêng tư - Cách sử dụng máy ảnh
Giá trị mô tả : Sử dụng máy ảnh $ (PRODUCT_NAME)

Vị trí: Khoá: Bảo mật - Vị trí luôn sử dụng Mô tả
Giá trị: sử dụng vị trí của $ (PRODUCT_NAME)

Chìa khóa: Quyền riêng tư - Vị trí Khi Sử dụng Mô tả Cách sử dụng
Giá trị : Vị trí sử dụng $ (PRODUCT_NAME)

Heath: Key: Quyền riêng tư - Chia sẻ sức khỏe Sử dụng Mô tả
Giá trị: Sử dụng chia sẻ sức khỏe $ (PRODUCT_NAME)

Khóa: Quyền riêng tư - Cách sử dụng Cập nhật Sức khỏe Mô tả
Giá trị: Sử dụng cập nhật sức khỏe $ (PRODUCT_NAME)

HomeKit: Key: Privacy - HomeKit Sử dụng Mô tả
Giá trị: sử dụng bộ dụng cụ gia đình $ (PRODUCT_NAME)

Thư viện phương tiện: Khóa: Quyền riêng tư - Mô tả sử dụng thư viện phương tiện
Giá trị: sử dụng thư viện phương tiện $ (PRODUCT_NAME)

Chuyển động: Chìa khóa: Bảo mật - Mô tả sử dụng chuyển động
Giá trị: sử dụng chuyển động $ (PRODUCT_NAME)

Nhận dạng giọng nói: Khóa: Quyền riêng tư - Cách sử dụng Nhận dạng giọng nói Mô tả
Giá trị: Sử dụng giọng nói của $ (PRODUCT_NAME)

SiriKit: Khóa: Quyền riêng tư -
Giá trị Mô tả Sử dụng Siri: Sử dụng siri $ (PRODUCT_NAME)

Nhà cung cấp TV: Khóa: Quyền riêng tư - Cách sử dụng Nhà cung cấp TV
Giá trị Mô tả : $ (PRODUCT_NAME) tvSử dụng nhà cung cấp


0

Đối với bất kỳ ai tự hỏi tại sao đột nhiên ứng dụng của bạn bây giờ có tất cả các cài đặt quyền này ngay từ đầu thì có thể là do CocoaPods hoặc Carthage - họ đưa vào tất cả các quyền này. Tôi vừa nâng cấp ứng dụng của mình để sử dụng cordova-plugin-firebasex có cài đặt Cocoapods mở rộng (và các phần phụ thuộc). Bạn có thể tắt các quyền này TRƯỚC KHI cài đặt cocoapods vào dự án của mình bằng cách đặt PermissionsConfiguration.xcconfig vào thư mục gốc của dự án - bạn có thể đọc thêm về điều này tại đây: https://cocoapods.org/pods/Permission#installation

Tất cả điều này làm tôi ngạc nhiên khi phiên bản mới của ứng dụng của tôi bị từ chối với 7 khóa / chuỗi quyền bị thiếu trong tệp Info.plist. Sau đó, tôi phải đào sâu vào dự án của mình để tìm nguyên nhân gây ra điều này vì ứng dụng của tôi không cần hoặc sử dụng bất kỳ quyền nào trong số này (không bao giờ có).

Nó có thể tồn tại nhưng hiện tại tôi không thể tìm ra cách xóa quyền sau khi tích hợp nhóm ... tôi sẽ phải tìm hiểu về cách thực hiện điều này mà không bắt đầu lại dự án của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.