NSCameraUsageDescription ใน iOS 10.0 runtime error หรือไม่


154

ใช้iOS 10.0เบต้าครั้งสุดท้าย ฉันได้ลองใช้กล้องเพื่อสแกนบาร์โค้ดในแอปของฉันและมันล้มเหลวด้วยข้อผิดพลาดรันไทม์นี้

แอปนี้ทำงานล้มเหลวเนื่องจากพยายามเข้าถึงข้อมูลที่มีความอ่อนไหวต่อความเป็นส่วนตัว Info.plist ของแอปจะต้องมีคีย์ NSCameraUsageDescription ที่มีค่าสตริงที่อธิบายถึงผู้ใช้ว่าแอปใช้ข้อมูลนี้อย่างไร

วางคีย์นี้ลงในแผน แต่มันยังคงล้มเหลว?


6
ฉันมีปัญหาเดียวกันเพิ่ม NSCameraUsageDescription ใน info.plist แต่ยังคงขัดข้องด้วยข้อความเดียวกัน คุณจัดการเพื่อแก้ไขมันได้หรือไม่? เห็นได้ชัดว่าไม่มีใครที่ตอบปัญหานี้เข้าใจว่าเกิดปัญหาแม้ว่าคุณจะเพิ่มรหัสแล้วก็ตาม
CarmenA

หากคุณเพิ่มรายการลงในไฟล์ info.plist ที่ถูกต้อง แต่ยังคงล้มเหลวอาจเป็นเพราะ Xcode บางครั้งไม่สามารถสังเกตเห็นการเปลี่ยนแปลงในไฟล์ทรัพยากรเช่น info.plist รูปภาพเสียงภาพยนตร์ ฯลฯ คุณอาจต้องดำเนินการ ทำความสะอาดหรือลบผลิตภัณฑ์สร้างแอปจากโฟลเดอร์ Derived Data เพื่อบังคับให้ Xcode ใช้เวอร์ชันล่าสุด
Walt Sellers

คำตอบ:


227

หลังจาก iOS 10 คุณต้องกำหนดและให้คำอธิบายการใช้งานของข้อมูลที่เป็นส่วนตัวของระบบที่เข้าถึงได้โดยแอปของคุณใน Info.plist ดังต่อไปนี้:

ปฏิทิน

Key    :  Privacy - Calendars Usage Description    
Value  :  $(PRODUCT_NAME) calendar events

คำเตือน:

Key    :   Privacy - Reminders Usage Description    
Value  :   $(PRODUCT_NAME) reminder use

ติดต่อ:

Key    :   Privacy - Contacts Usage Description     
Value  :  $(PRODUCT_NAME) contact use

รูปถ่าย:

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

การแบ่งปันทางบลูทู ธ :

Key    :  Privacy - Bluetooth Peripheral Usage Description     
Value  :  $(PRODUCT_NAME) Bluetooth Peripheral use

ไมโครโฟน:

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

กล้อง:

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

สถานที่:

Key    :  Privacy - Location Always Usage Description   
Value  :  $(PRODUCT_NAME) location use

Key    :  Privacy - Location When In Use Usage Description   
Value  :  $(PRODUCT_NAME) location use

เฮลธ์:

Key    :  Privacy - Health Share Usage Description   
Value  :  $(PRODUCT_NAME) heath share use

Key    :  Privacy - Health Update Usage Description   
Value  :  $(PRODUCT_NAME) heath update use

HomeKit:

Key    :  Privacy - HomeKit Usage Description   
Value  :  $(PRODUCT_NAME) home kit use

ไลบรารีสื่อ:

Key    :  Privacy - Media Library Usage Description   
Value  :  $(PRODUCT_NAME) media library use

การเคลื่อนไหว:

Key    :  Privacy - Motion Usage Description   
Value  :  $(PRODUCT_NAME) motion use

การรู้จำเสียง:

Key    :  Privacy - Speech Recognition Usage Description   
Value  :  $(PRODUCT_NAME) speech use

สิริกิตต์:

Key    :  Privacy - Siri Usage Description  
Value  :  $(PRODUCT_NAME) siri use

ผู้ให้บริการทีวี:

Key    :  Privacy - TV Provider Usage Description   
Value  :  $(PRODUCT_NAME) tvProvider use

คุณจะได้รับข้อมูลรายละเอียดในการนี้การเชื่อมโยง


1
Privacy - Photo Library Usage Descriptionทำเพื่อข้อผิดพลาดNSPhotoLibraryUsageDescription
Bruno Bieri

ฉันใหม่กับการพัฒนาของ Apple และปัญหานี้น่ารำคาญ ดีใจที่ฉันมามัน ไชโย!
user2529011

1
@MaylorTaylor: ใช่คุณต้องเพิ่มมัน
Bhoopi

111

ในฐานะที่เป็นแอปเปิ้ลมีการเปลี่ยนแปลงวิธีการที่คุณสามารถเข้าถึงใด ๆ iOS 10ชนิดข้อมูลส่วนตัวของผู้ใช้ใน

คุณต้องเพิ่มPrivacy - Camera usage descriptionคีย์ "" ลงในแอปของคุณInfo.plistและข้อมูลการใช้งานซึ่งใช้กับแอปพลิเคชันของคุณดังตัวอย่างด้านล่างที่ฉันได้ระบุไว้ว่าฉันเคยสแกนบาร์โค้ด

สำหรับข้อมูลเพิ่มเติมโปรดหาภาพหน้าจอด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่


62

คุณต้องเพิ่มคีย์ด้านล่างใน info.plist

NSCameraUsageDescription หรือ Privacy - Camera usage description

และเพิ่มคำอธิบายการใช้งาน

ภาพหน้าจอโดยละเอียดมีอยู่ในลิงค์นี้


ดูเหมือนเขาจะเพิ่มเข้าไปแล้ว แต่ก็ยังได้รับความผิดพลาด มันเป็นปัญหาแบบเดียวกันกับที่ฉันกำลังประสบอยู่แม้ว่า KVP จะอยู่ในสภาพที่ไม่สมบูรณ์

43

หรือเปิด Info.plist เป็นซอร์สโค้ดและเพิ่มสิ่งนี้:

<key>NSCameraUsageDescription</key>
<string>Camera usage description</string>

4
ในกรณีที่มีใครบางคนกำลังมองหาการแปล "NSCameraUsageDescription" ให้เพิ่มไฟล์infoPlist.strings ที่"NSCameraUsageDescription" = "Requires access to the camera";แปลเป็นภาษาท้องถิ่นของคุณ
Khurram Shehzad

30

ใช้ค่าดิบเหล่านี้และคัดลอกใน info.plist

    <key>NSCalendarsUsageDescription</key>
      <string>$(PRODUCT_NAME) calendar events</string>
    <key>NSRemindersUsageDescription</key>
      <string>$(PRODUCT_NAME) reminder use</string>
    <key>NSCameraUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSMicrophoneUsageDescription</key>
      <string>This app requires to access your microphone to record video with your voice send via chat</string>
    <key>NSPhotoLibraryUsageDescription</key>
      <string>This app requires to access your photo library to show image on profile and send via chat</string>
    <key>NSContactsUsageDescription</key>
       <string>$(PRODUCT_NAME) contact use</string>
    <key>NSLocationAlwaysUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>
    <key>NSLocationWhenInUseUsageDescription</key>
      <string>$(PRODUCT_NAME) location use</string>

จากคุณมีชื่อคีย์ดิบเหล่านี้หรือไม่
Omar N Shamali

มันเยี่ยมมาก มันช่วยฉันจากการคลิกจำนวนมากใน
xCode

26

xcode UI ได้เปลี่ยนบิตจากรุ่นหนึ่งเป็นรุ่นถัดไปดังนั้นที่นี่เป็นที่ที่คุณอัพเดต plist สำหรับ 9.0 beta 4 หากช่วยให้โครงการ -> เป้าหมาย -> ข้อมูลป้อนคำอธิบายรูปภาพที่นี่


2
นี่ควรเป็นคำตอบที่ยอมรับได้! ฉันมีปัญหาเดียวกันนี้ใน XCode 9.2 แม้ว่าจะมีการเพิ่มลง<key>NSCameraUsageDescription</key>ในinfo.plistแล้ว
psantos

2
คำตอบที่ยอมรับอย่างแน่นอน !! ฉันมีสองเป้าหมายในโครงการของฉันและฉันได้พยายามเพิ่มสิ่งนี้<key>NSCameraUsageDescription</key>ลงในไฟล์info.plistที่สองแต่ไม่มีผลใด ๆ และฉันสามารถยืนยันได้ว่า XCode (10.1) ไม่ได้ทำการเปลี่ยนแปลงเหล่านั้นโดยการเรียกใช้สถานะ git เนื่องจากinfo.plistของฉันสำหรับเป้าหมายอื่นไม่มีการเปลี่ยนแปลงใด ๆ ดังนั้นวิธีการที่เหมาะสมคือการไปผ่านโครงงาน> Target-> ข้อมูล ขอบคุณคน!
bra.Scene

4

อินสแตนซ์อื่นที่ฉันเผชิญในขณะที่พยายามใช้กล้องก็คือมันยังคงทำงานล้มเหลวอย่างต่อเนื่อง_CRASHING_DUE_TO_PRIVACYแม้หลังจากเพิ่ม "คำอธิบายการใช้กล้อง" หลังจากล้มเหลวในการรับสิ่งใดเป็นชิ้นเป็นอันจาก call stack ให้เปลี่ยนเป็น "Organizer" และค้นหารายงานความผิดพลาดของอุปกรณ์ ฉันพบว่าในความเป็นจริงการร้องเรียนเกี่ยวกับความเป็นส่วนตัวเนื่องจาก "คำอธิบายการใช้ไมโครโฟน" หายไป ฉันเพิ่มที่และกำจัดการสลายความลับดังกล่าว


4

สำหรับผู้ที่ยังคงได้รับข้อผิดพลาดแม้ว่าคุณจะเพิ่มคีย์ที่เหมาะสมลงใน Info.plist:

ตรวจสอบให้แน่ใจว่าคุณกำลังเพิ่มคีย์ลงใน Info.plist ที่ถูกต้อง xCode เวอร์ชันใหม่กว่าเห็นได้ชัดว่ามี 3 Info.plist

หนึ่งอยู่ภายใต้โฟลเดอร์ที่มีชื่อแอปของคุณซึ่งแก้ไขปัญหาให้ฉันได้

อันดับที่สองอยู่ภายใต้ YourappnameTests และอันดับที่สามอยู่ภายใต้ YourappnameUITests

หวังว่ามันจะช่วย


2

หากคุณใช้ Ionic คุณสามารถแก้ปัญหาได้โดยตรงจากconfig.xmlโดยเพิ่มแท็ก ios ภายในแพลตฟอร์ม:

<platform name="ios">
.
.
.
    <config-file target="*-Info.plist" parent="NSPhotoLibraryUsageDescription">
        <string>photo library usage description</string>
    </config-file>
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
        <string>camera usage description</string>
    </config-file>
.
.
.
</platform>

ฉันต้องการขอบคุณ @BHUPI คำตอบด้วย


1

คุณทำได้โดยการเพิ่มรหัสการใช้งานลงใน Info.plist ของแอปพร้อมสตริงวัตถุประสงค์ NSCameraUsageDescription ระบุเหตุผลที่แอปของคุณเข้าถึงกล้องของอุปกรณ์

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


1

ฉันตรวจสอบตัวย่อและพบว่ามันไม่ทำงานเฉพาะในข้อมูล "โครงการ" คุณต้องเพิ่ม "ความเป็นส่วนตัว - กล้อง .... " แล้วมันควรจะทำงาน หวังว่าจะช่วยคุณ


0

ฉันมีปัญหาเดียวกันและไม่สามารถหาวิธีแก้ไขได้ Mark90 นั้นมีไฟล์ info.plist อยู่มากมายและคุณควรแก้ไขให้ถูกต้อง ไปที่โครงการภายใต้เป้าหมายเลือกโครงการ (ไม่ใช่การทดสอบ) ในแถบแท็บเลือกข้อมูลและเพิ่มสิทธิ์ภายใต้ " คุณสมบัติ iOS เป้าหมายที่กำหนดเอง "

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