iOS 10 - Các thay đổi về yêu cầu quyền của Máy ảnh, micrô và Thư viện ảnh khiến ứng dụng gặp sự cố


103

iOS 10, Hiện yêu cầu Quyền của Người dùng để Truy cập Thư viện Phương tiện, Ảnh, Máy ảnh và các Phần cứng khác như thế này. Giải pháp cho việc này là thêm các khóa của họ vào info.plistvới mô tả cho người dùng rằng cách chúng tôi đang sử dụng dữ liệu của họ,

Tôi chỉ có thể tìm thấy một vài chìa khóa

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

Tôi muốn biết liệu có nhiều khóa hơn cũng cho phần cứng khác như trong trường iOS 10 hợp bạn không cung cấp info.plistmô tả khóa thích hợp hay không, ứng dụng của bạn sẽ gặp sự cố nếu xây dựng bằng XCode-8 beta.


iOS 10 có phải là theo NDA không?
sage444

Tôi không chắc chắn về điều này.
Syed Ali Salman,

Câu trả lời:


138

[Danh sách khóa bảo mật được CẬP NHẬT lên iOS 13 - xem bên dưới]

Có một danh sách tất cả những Cocoa Keysgì bạn có thể chỉ định trong Info.plisttệp của mình :

https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

(Xcode: Target -> Info -> Custom iOS Target Properties)

iOS đã yêu cầu quyền truy cập micrô, máy ảnh và thư viện phương tiện trước đó (iOS 6, iOS 7), nhưng vì ứng dụng iOS 10 sẽ bị lỗi nếu bạn không cung cấp mô tả lý do tại sao bạn yêu cầu quyền (không thể trống).

Khóa bảo mật với mô tả ví dụ: gian lận

Nguồn

Ngoài ra, bạn có thể mở Info.plistdưới dạng mã nguồn: mã nguồn

Nguồn

Và thêm các khóa riêng tư như thế này:

<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>

Danh sách tất cả các khóa bảo mật: [CẬP NHẬT lên iOS 13]

NFCReaderUsageDescription
NSAppleMusicUsageDescription
NSBluetoothAlwaysUsageDescription
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSFaceIDUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryAddUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription

Cập nhật 2019:

Trong những tháng trước, hai ứng dụng của tôi đã bị từ chối trong quá trình đánh giá vì mô tả sử dụng máy ảnh không chỉ rõ những gì tôi làm với ảnh đã chụp.

Tôi đã phải thay đổi mô tả từ ${PRODUCT_NAME} need access to the camera to take a photothành ${PRODUCT_NAME} need access to the camera to update your avatarmặc dù bối cảnh ứng dụng là rõ ràng (người dùng nhấn vào hình đại diện).

Có vẻ như Apple hiện đang chú ý hơn đến các mô tả sử dụng quyền riêng tư và chúng tôi nên giải thích chi tiết lý do tại sao chúng tôi yêu cầu sự cho phép.


2
có, nhưng thay đổi là ứng dụng bây giờ sẽ bị lỗi nếu bạn chưa cung cấp mô tả về lý do tại sao chúng tôi yêu cầu quyền. xin vui lòng sửa cho tôi nếu tôi sai.
Syed Ali Salman,

1
@Syed Ali Salman Bạn nói đúng - nó sẽ bị lỗi kể từ iOS10, bây giờ thực sự nhận được câu hỏi của bạn. Sẽ cập nhật câu trả lời. :)
KlimczakM

1
Tôi hy vọng apple sẽ quyết định xem nó có phải là bắt buộc hay không. Theo tài liệu táo nó không phải là:Explain why your app needs the information if it’s not obvious. You can add custom text to the system-provided permission request alert. Make the text specific and polite, so people don’t feel pressured. Keep the text short, and use sentence case. There’s no need to include your app name. The system already identifies your app as the one making the request.
sumofighter666

Trước đây tôi đã nhận xét về việc có thể để trống các giá trị này để chỉ hiển thị thông báo do hệ thống tạo và trong khi nó hoạt động tốt về mặt chức năng, có vẻ như Apple sẽ tự động từ chối tệp nhị phân của bạn nếu bạn bao gồm các khóa này nhưng không đặt giá trị cho chúng .
Stonz2

13
Đối với tôi, dường như việc để một ứng dụng gặp sự cố khi nó thiếu mô tả cấp phéphoàn toàn vô nghĩa ... Thật là một trải nghiệm người dùng kém! (Ẩn danh) phàn nàn trôi nhanh trong bài đánh giá AppStore ... Và tất nhiên Simultor hành xử khác ...
Gabriel

65

Vui lòng tìm mã bên dưới cho mẫu yêu cầu ios 10 cho info.plist.
Bạn có thể sửa đổi thông điệp tùy chỉnh của mình.

    <key>NSCameraUsageDescription</key>
    <string>${PRODUCT_NAME} Camera Usage</string>

    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>${PRODUCT_NAME} BluetoothPeripheral</string>

    <key>NSCalendarsUsageDescription</key>
    <string>${PRODUCT_NAME} Calendar Usage</string>

    <key>NSContactsUsageDescription</key>
    <string>${PRODUCT_NAME} Contact fetch</string>

    <key>NSHealthShareUsageDescription</key>
    <string>${PRODUCT_NAME} Health Description</string>

    <key>NSHealthUpdateUsageDescription</key>
    <string>${PRODUCT_NAME} Health Updates</string>

    <key>NSHomeKitUsageDescription</key>
    <string>${PRODUCT_NAME} HomeKit Usage</string>

    <key>NSLocationAlwaysUsageDescription</key>
    <string>${PRODUCT_NAME} Use location always</string>

    <key>NSLocationUsageDescription</key>
    <string>${PRODUCT_NAME} Location Updates</string>

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>${PRODUCT_NAME} WhenInUse Location</string>

    <key>NSAppleMusicUsageDescription</key>
    <string>${PRODUCT_NAME} Music Usage</string>

    <key>NSMicrophoneUsageDescription</key>
    <string>${PRODUCT_NAME} Microphone Usage</string>

    <key>NSMotionUsageDescription</key>
    <string>${PRODUCT_NAME} Motion Usage</string>

    <key>kTCCServiceMediaLibrary</key>
    <string>${PRODUCT_NAME} MediaLibrary Usage</string>

    <key>NSPhotoLibraryUsageDescription</key>
    <string>${PRODUCT_NAME} PhotoLibrary Usage</string>

    <key>NSRemindersUsageDescription</key>
    <string>${PRODUCT_NAME} Reminder Usage</string>

    <key>NSSiriUsageDescription</key>
    <string>${PRODUCT_NAME} Siri Usage</string>

    <key>NSSpeechRecognitionUsageDescription</key>
    <string>${PRODUCT_NAME} Speech Recognition Usage</string>

    <key>NSVideoSubscriberAccountUsageDescription</key>
    <string>${PRODUCT_NAME} Video Subscribe Usage</string>

iOS 11 trở lên, Nếu bạn muốn thêm ảnh / hình ảnh vào thư viện của mình thì bạn phải thêm khóa này

    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>${PRODUCT_NAME} library Usage</string>

Cảm ơn, câu trả lời thực sự của nó, chỉ cần Apple nói "Không cần bao gồm tên ứng dụng của bạn. Hệ thống đã xác định ứng dụng của bạn là ứng dụng đưa ra yêu cầu."
Yucel Bayram

2
Đó là câu trả lời tôi đã tìm kiếm
Dinesh Phalwadiya

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.