แอปถูกปฏิเสธเนื่องจากไม่มีคำอธิบายการใช้งาน (Xcode8)


91

วันนี้ฉันจึงได้รับเมลนี้แจ้งว่าแอปรุ่นล่าสุดของฉันถูกปฏิเสธโดย iTunes Connect เนื่องจากคำอธิบายการใช้งานบางส่วนขาดหายไป ให้ถูกต้อง:

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

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

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

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

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

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

เมื่อปัญหาเหล่านี้ได้รับการแก้ไขแล้วคุณสามารถส่งไบนารีที่แก้ไขได้อีกครั้ง

ฉันคิดว่าสิ่งเหล่านี้กลายเป็นสิ่งจำเป็นสำหรับ iOS 10 แต่ปัญหาเดียวคือแอปของฉันไม่ได้ขออนุญาตเข้าถึงสิ่งเหล่านี้ .. ฉันคิดว่าคำอธิบายนั้นจำเป็นต่อเมื่อคุณขออนุญาตจริง ๆ ?

เป็นเพราะหนึ่งในการอ้างอิงของฉัน (Cocoapods) อาจมีรหัสเพื่อขอสิทธิ์เหล่านี้หรือไม่ หรือคำอธิบายเหล่านี้จำเป็นแม้ว่าฉันจะไม่ขอดูปฏิทินผู้ใช้รายชื่อติดต่อ ฯลฯ


3
จากประสบการณ์ของฉัน - สิ่งเหล่านี้จำเป็นเฉพาะในกรณีที่คุณกำลังขอสิทธิ์ ดังนั้นการพึ่งพาบางอย่างกำลังทำเพื่อคุณ การอนุญาตทั้งหมดนี้ยังมีกลิ่นคาวโดยเฉพาะอย่างยิ่งหากแอปของคุณเป็นรายการสิ่งที่ต้องทำง่ายๆ บางทีการพึ่งพาบางอย่างกำลังเกิดขึ้นกับฟิชชิง
Eimantas

คุณช่วยโพสต์รายการของคุณPodFileและไลบรารีที่คุณใช้ (ถ้าคุณใช้ cocoapods ภายนอก) ได้ไหม
Julien Quere

มันคือgithub.com/nickoneill/PermissionScope .. ขอบคุณสำหรับความช่วยเหลือ!
KimHafr

ُ คำอธิบายและแสดงการใช้งาน: iosdevcenters.blogspot.com/2016/09/…
Saeid

ฉันมีปัญหาเดียวกันทุกประการและฉันเดาว่ามันเกิดจาก: pod 'ReactNativePermissions',: path => '../node_modules/react-native-permissions'
luky

คำตอบ:


33

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

หรือที่ดีกว่านั้นหากคุณไม่ต้องการการเข้าถึงให้ดูว่ามีวิธีที่จะไม่ร้องขอหรือไม่ (หรือใช้เฟรมเวิร์กที่ไม่จำเป็น)


11
ฉันไม่สามารถจินตนาการได้ตลอดชีวิตว่าฉันจะเพิ่มห้องสมุดเพื่อขอสิทธิ์เหล่านี้ทั้งหมด แต่มันชัดเจนมากเมื่อฉันพบ: github.com/nickoneill/PermissionScope
KimHafr

1
ใช่กรอบแบบนั้นอาจไม่ใช่ความคิดที่ดีเพราะมันทำให้แอปของคุณประกาศสิทธิ์มากกว่าที่ต้องการ
Matthew Seaman

3
ฉันเดาว่านี่เป็นฟีเจอร์มากกว่าบั๊ก .. iTunes Connect ตรวจพบว่ามีบางคนขอสิทธิ์ในแอปของคุณ ในกรณีนี้คุณต้องกรอกคำอธิบายการใช้งานสำหรับสิ่งเหล่านี้ทั้งหมดในกรณีที่คุณอาจเรียกใช้โค้ดบางส่วนใน permissionscope ฉันชอบกรอบเช่นกันและฉันยังไม่พร้อมที่จะแทนที่ ดังนั้นฉันจึงกรอกข้อความปลอมและแอปได้รับการอนุมัติ ฉันได้ส่งไปที่ AppStore แล้วหวังว่ามันจะโอเคนะ :-)
KimHafr

15
ต้องการวิธีตรวจสอบว่าเฟรมเวิร์คใดกำลังขอการอนุญาตเหล่านั้นหรือไม่?
neobie

5
Neobie - คุณพบว่าคุณสามารถตรวจจับเฟรมเวิร์คที่ขอสิทธิ์ได้อย่างไร?
Nitesh

140

iOS 10ต้องเพิ่มการอนุญาตในinfo.plistเพียงแค่ตรวจสอบบล็อกนี้: - การตั้งค่าใน ios-10คุณจะได้รับความคิดทั้งหมด

เพิ่มสิทธิ์ในฐานไฟล์info.plistบนบันทึกข้อผิดพลาดของคุณ

หมายเหตุ:เขียนเหตุผลที่เหมาะสมสำหรับการอนุญาตในค่าสตริงมิฉะนั้นแอปเปิ้ลปฏิเสธแอปอีกครั้ง

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>

NSBluetoothPeripheralUsageDescription

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

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


ควรเป็น "$ {PRODUCT_NAME}" แทน "$ (PRODUCT_NAME)" ไม่ใช่หรือ "{}" แทน "()".
backslash-f

@ ทับขวา-F, โปรดตรวจสอบไฟล์ plist $(PRODUCT_NAME)ที่มีอยู่ในโครงการใหม่และมันควรจะเป็น คุณสามารถดูคุณสมบัติเริ่มต้นเช่นBundle nameในไฟล์ plist
Jayesh Thanki

1
โปรดทราบว่าคำอธิบายทั่วไปเช่นนี้จะไม่ช่วยให้คุณได้รับการอนุมัติจาก App Store อีกต่อไป เราได้รับคำอธิบายที่คล้ายกันเพียงสองครั้ง คุณต้องอธิบายการใช้งานจริงของมนุษย์
O'Rooney

9

คุณสามารถเพิ่มใน info.plist ของคุณเช่น:

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

เป็นต้น

หวังว่าจะช่วยใครสักคน ...


6

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


3

ปฏิทิน: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้งานปฏิทิน
ค่า: กิจกรรมในปฏิทิน $ (PRODUCT_NAME)

คำเตือน: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้งานการแจ้งเตือน
ค่า: การแจ้งเตือนการใช้งาน$ (PRODUCT_NAME)

ผู้ติดต่อ : คีย์: ความเป็นส่วนตัว - รายละเอียดการใช้งานรายชื่อผู้ติดต่อ
ค่า: $ (PRODUCT_NAME) ใช้ติดต่อ

รูปภาพ: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้งานไลบรารีรูปภาพ
ค่า: การใช้รูปภาพ $ (PRODUCT_NAME)

การแชร์บลูทู ธ : คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้อุปกรณ์ต่อพ่วงบลูทู ธ
มูลค่า: $ (PRODUCT_NAME) การใช้อุปกรณ์ต่อพ่วงบลูทู ธ

ไมโครโฟน: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้งานไมโครโฟน
ค่า: การใช้ไมโครโฟน$ (PRODUCT_NAME)

กล้อง: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้งานกล้อง
มูลค่า: การใช้กล้อง$ (PRODUCT_NAME)

ตำแหน่ง: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้งานตำแหน่งเสมอ
ค่า: การใช้ตำแหน่ง $ (PRODUCT_NAME)

คีย์: ความเป็นส่วนตัว - ตำแหน่งเมื่อใช้งานคำอธิบายการใช้งาน
ค่า: การใช้ตำแหน่ง $ (PRODUCT_NAME)

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

คีย์: ความเป็นส่วนตัว -
ค่าคำอธิบายการใช้งานการอัปเดตสุขภาพ: $ (PRODUCT_NAME) ใช้การอัปเดตเพื่อความปลอดภัย

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

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

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

การรู้จำเสียง: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้การรู้จำเสียง
ค่าคำอธิบาย: การใช้เสียงพูด $ (PRODUCT_NAME)

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

ผู้ให้บริการทีวี: คีย์: ความเป็นส่วนตัว - คำอธิบายการใช้งานของผู้ให้บริการทีวี
มูลค่า: $ (PRODUCT_NAME) ใช้ tvProvider


0

สำหรับใครที่สงสัยว่าทำไมจู่ๆแอปของคุณจึงมีการตั้งค่าการอนุญาตเหล่านี้ในตอนแรกอาจเป็นเพราะ CocoaPods หรือ Carthage พวกเขาติดตะขอเกี่ยวกับการอนุญาตทั้งหมดนี้ ฉันเพิ่งอัปเกรดแอปของฉันเพื่อใช้ Cordova-plugin-firebasex ซึ่งมีการติดตั้ง Cocoapods (และการอ้างอิง) ที่ครอบคลุม คุณสามารถปิดการอนุญาตเหล่านี้ได้ก่อนที่คุณจะติดตั้ง cocoapods ลงในโปรเจ็กต์ของคุณโดยการใส่ PermissionsConfiguration.xcconfig ในรูทของโปรเจ็กต์ของคุณคุณสามารถอ่านข้อมูลเพิ่มเติมได้ที่นี่: https://cocoapods.org/pods/Permission#installation

ทั้งหมดนี้ทำให้ฉันประหลาดใจเมื่อแอปเวอร์ชันใหม่ของฉันถูกปฏิเสธโดยมีคีย์ / สตริงการอนุญาต 7 รายการหายไปจากไฟล์ Info.plist จากนั้นฉันต้องเจาะลึกโครงการของฉันเพื่อค้นหาสิ่งที่ทำให้เกิดสิ่งนี้เนื่องจากแอปของฉันไม่ต้องการหรือใช้การอนุญาตใด ๆ เหล่านี้ (ไม่เคยมี)

อาจมีอยู่ แต่ในขณะนี้ฉันไม่สามารถหาวิธีลบสิทธิ์ได้หลังจากการรวมพ็อด ...

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