iOS 10 - การเปลี่ยนแปลงในการขอสิทธิ์ของกล้องไมโครโฟนและคลังรูปภาพทำให้แอปพลิเคชันหยุดทำงาน


104

iOS 10 ตอนนี้ต้องได้รับอนุญาตจากผู้ใช้ในการเข้าถึงไลบรารีสื่อภาพถ่ายกล้องและฮาร์ดแวร์อื่น ๆ เช่นนี้ วิธีแก้ปัญหานี้คือการเพิ่มคีย์ลงในinfo.plistคำอธิบายสำหรับผู้ใช้ว่าเราใช้ข้อมูลของพวกเขาอย่างไร

ฉันหากุญแจได้เพียงไม่กี่ดอก

NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription

ฉันต้องการทราบว่ามีคีย์เพิ่มเติมสำหรับฮาร์ดแวร์อื่น ๆ หรือไม่เช่นiOS 10 หากคุณไม่ได้ระบุinfo.plistคำอธิบายคีย์ที่เหมาะสมแอปพลิเคชันของคุณจะพังหากสร้างโดยใช้ XCode - 8 เบต้า


iOS 10 อยู่ภายใต้ NDA ไม่ใช่หรือ
sage444

ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้
Syed Ali Salman

คำตอบ:


138

[อัปเดตรายการคีย์ความเป็นส่วนตัวไปยัง iOS 13 - ดูด้านล่าง]

มีรายการทั้งหมดCocoa Keysที่คุณสามารถระบุได้ในInfo.plistไฟล์ของคุณ:

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

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

iOS ต้องการสิทธิ์ในการเข้าถึงไมโครโฟนกล้องและไลบรารีสื่อก่อนหน้านี้อยู่แล้ว (iOS 6, iOS 7) แต่เนื่องจากแอป iOS 10 จะหยุดทำงานหากคุณไม่ได้ให้คำอธิบายว่าเหตุใดคุณจึงขออนุญาต (ไม่สามารถทำได้ ว่างเปล่า).

คีย์ความเป็นส่วนตัวพร้อมคำอธิบายตัวอย่าง: สูตรโกง

ที่มา

หรือคุณสามารถเปิดInfo.plistเป็นซอร์สโค้ด: รหัสแหล่งที่มา

ที่มา

และเพิ่มคีย์ความเป็นส่วนตัวดังนี้:

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

รายการคีย์ความเป็นส่วนตัวทั้งหมด: [อัปเดตเป็น iOS 13]

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

อัปเดต 2019:

ในช่วงหลายเดือนที่ผ่านมาแอปของฉัน 2 แอปถูกปฏิเสธในระหว่างการตรวจสอบเนื่องจากคำอธิบายการใช้งานกล้องไม่ได้ระบุว่าฉันทำอะไรกับรูปภาพที่ถ่าย

ฉันต้องเปลี่ยนคำอธิบายจาก${PRODUCT_NAME} need access to the camera to take a photoเป็น${PRODUCT_NAME} need access to the camera to update your avatarแม้ว่าบริบทของแอปจะชัดเจน (ผู้ใช้แตะที่อวาตาร์)

ดูเหมือนว่าตอนนี้ Apple ให้ความสำคัญกับคำอธิบายการใช้งานความเป็นส่วนตัวมากยิ่งขึ้นและเราควรอธิบายรายละเอียดว่าทำไมเราจึงขออนุญาต


2
ใช่ แต่อย่างไรก็ตามการเปลี่ยนแปลงคือตอนนี้แอปพลิเคชันจะหยุดทำงานหากคุณไม่ได้ให้คำอธิบายว่าเหตุใดเราจึงขออนุญาต โปรดแก้ไขฉันถ้าฉันผิด
Syed Ali Salman

1
@Syed Ali Salman คุณพูดถูก - มันจะพังตั้งแต่ iOS10 ตอนนี้ได้รับคำถามของคุณแล้ว จะมาอัพเดทคำตอบ. :)
KlimczakM

1
ฉันหวังว่าแอปเปิลจะตัดสินใจว่าเป็นข้อบังคับหรือไม่ ตามเอกสารของ apple ไม่ใช่: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

ก่อนหน้านี้ฉันได้แสดงความคิดเห็นเกี่ยวกับความสามารถในการปล่อยให้ค่าเหล่านี้ว่างไว้เพื่อแสดงข้อความที่ระบบสร้างขึ้นและแม้ว่ามันจะทำงานได้ดี แต่ดูเหมือนว่า Apple จะปฏิเสธไบนารีของคุณโดยอัตโนมัติหากคุณรวมคีย์เหล่านี้ไว้ แต่ไม่ได้ตั้งค่าให้ .
Stonz2

13
สำหรับฉันแล้วดูเหมือนว่ามันเป็นเรื่องไร้สาระโดยสิ้นเชิงจาก Appleที่ปล่อยให้แอปหยุดทำงานเมื่อไม่มีคำอธิบายสิทธิ์ ... ช่างเป็นประสบการณ์การใช้งานที่แย่มาก! (ไม่ระบุชื่อ) บ่นอย่างรวดเร็วในการตรวจสอบ AppStore ... และแน่นอนว่า Simultor ทำงานแตกต่างกัน ...
Gabriel

65

กรุณาหารหัสสำหรับตัวอย่างได้รับอนุญาต iOS 10 info.plistขอให้
คุณสามารถแก้ไขข้อความที่คุณกำหนดเองได้

    <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 และบวกหากคุณต้องการเพิ่มรูปภาพ / รูปภาพลงในไลบรารีของคุณคุณต้องเพิ่มคีย์นี้

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

ขอบคุณคำตอบที่แท้จริงเพียงแค่ Apple บอกว่า "ไม่จำเป็นต้องใส่ชื่อแอปของคุณระบบระบุแอปของคุณแล้วว่าเป็นแอปที่ส่งคำขอ"
Yucel Bayram

2
นั่นคือคำตอบที่ฉันกำลังมองหา
Dinesh Phalwadiya

18

คุณต้องเพิ่มสิทธิ์นี้ใน Info.plist สำหรับ iOS 10

ภาพ:

Key       :  Privacy - Photo Library Usage Description    
Value   :  $(PRODUCT_NAME) photo use

ไมโครโฟน:

Key        :  Privacy - Microphone Usage Description    
Value    :  $(PRODUCT_NAME) microphone use

กล้อง:

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use

NSPhotoLibraryUsageDescriptionปุ่มขวาเป็นเหมือน
BangOperator
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.