Xcode 8“ สิทธิ์ในสภาพแวดล้อม aps หายไปจากลายเซ็นของแอป” ในการส่ง


118

ฉันมีแอปที่เราได้ส่งหลายเวอร์ชันไปในช่วง 6 เดือนที่ผ่านมาและเราใช้ APNS ฉันได้รับอีเมลต่อไปนี้จาก Apple หลังจากอัปเกรดเป็น Xcode 8

เรียนผู้พัฒนา

เราพบปัญหาอย่างน้อยหนึ่งอย่างกับการจัดส่งล่าสุดสำหรับ APP_NAME ของคุณ การจัดส่งของคุณประสบความสำเร็จ แต่คุณอาจต้องการแก้ไขปัญหาต่อไปนี้ในการจัดส่งครั้งต่อไป:

ไม่มีสิทธิ์ในการแจ้งเตือนแบบพุช - แอปของคุณมี API สำหรับบริการ Push Notification ของ Apple แต่สิทธิ์ในสภาพแวดล้อม aps หายไปจากลายเซ็นของแอป ในการแก้ไขปัญหานี้ตรวจสอบให้แน่ใจว่า App ID ของคุณเปิดใช้งานสำหรับการแจ้งเตือนแบบพุชในพอร์ทัลการจัดเตรียม จากนั้นลงนามแอปของคุณด้วยโปรไฟล์การจัดเตรียมการแจกจ่ายที่มีการให้สิทธิ์สภาพแวดล้อม aps สิ่งนี้จะสร้างลายเซ็นที่ถูกต้องและคุณสามารถส่งแอปของคุณอีกครั้งได้ ดู "การจัดเตรียมและการพัฒนา" ในคู่มือการเขียนโปรแกรมการแจ้งเตือนในพื้นที่และแบบพุชสำหรับข้อมูลเพิ่มเติม หากแอพของคุณไม่ใช้บริการ Apple Push Notification ก็ไม่ต้องดำเนินการใด ๆ คุณสามารถลบ API ออกจากการส่งในอนาคตเพื่อหยุดคำเตือนนี้ หากคุณใช้กรอบงานของบุคคลที่สาม

หลังจากแก้ไขปัญหาแล้วคุณสามารถใช้ Xcode หรือ Application Loader เพื่ออัปโหลดไบนารีใหม่ไปยัง iTunes Connect

ความนับถือ,

ทีมงาน App Store

มีอะไรแปลกบ้างที่ฉันไปที่developer.apple.com -> ใบรับรองตัวระบุและโปรไฟล์และ AppId ของฉันยังเปิดใช้งานการแจ้งเตือนแบบพุชอยู่ ฉันไม่ได้ทำอะไรที่แตกต่างไปจากที่ฉันเคยทำมาแล้วดังนั้นฉันจึงอยากรู้ว่าการอัปเดต Xcode 8 ทำให้บางสิ่งเสียหายหรือไม่ ความคิดใด ๆ ?

BTW: ลิงก์ที่พวกเขาวางไว้สำหรับคู่มือการเขียนโปรแกรมการแจ้งเตือนแบบพุชเสียในอีเมลนั่นไม่ใช่สัญญาณที่ดี

คำตอบ:


156

ง่ายมากจริงๆ ด้วยเหตุผลบางประการมันถูกปิดใช้งานบน Xcode 8 แต่ไปที่เป้าหมาย -> ความสามารถและตรวจสอบว่าการแจ้งเตือนแบบพุชถูกต้องในมุมมองนั้น สำหรับฉันมันมี "Fix Me" ฉันต้องคลิกและ voila


4
สิ่งที่แปลกเกี่ยวกับปัญหานี้ไม่ใช่วิธีแก้ปัญหาเป็นความจริงที่ว่าใน Xcode 7 สิ่งนี้ถูกเปิดใช้งานและหลังจากอัปเกรดแล้วก็ปิดใช้งาน
Unome

2
ฉันต้องเข้าไปในไฟล์สิทธิ์และเปลี่ยนค่าสภาพแวดล้อม APS เป็น 'การผลิต' เนื่องจากถูกตั้งค่าเป็น 'การพัฒนา' โดยค่าเริ่มต้นเมื่อสร้างขึ้น
เบค

61
ต้องมีคนไร้สมองบางคนที่เพิ่งจ้างใน Apple .. เหตุใดพวกเขาจึงสูญเสียเวลาของนักพัฒนาโดยการปิดใช้งานสิ่งต่างๆโดยปริยายและตั้งค่าที่ไม่เหมาะสมโดยปริยาย ฉันเสียเวลาไปหนึ่งวันในการสร้างโปรไฟล์ใบรับรองการดีบักและสิ่งที่น่ารำคาญอื่น ๆ ..
Hristo Atanasov

3
ที่สุด! มันไร้สาระมันยากมากที่จะทำให้มันใช้งานได้ ฉันได้ลบและสร้างใบรับรอง / โปรไฟล์ใหม่เป็นเวลาเกือบ 5 ชั่วโมงแล้ว สิ่งที่ดีคือฉันสามารถพูดได้ว่าตอนนี้ฉันเข้าใจแล้วว่าใบรับรอง / โปรไฟล์ / ตัวระบุเหล่านี้คืออะไร :) ขอบคุณสำหรับคำใบ้นี้
Kamil Rykowski

4
@bek ทราบว่าคุณควรปล่อยให้เป็นการพัฒนา จะเปลี่ยนเป็นการผลิตโดยอัตโนมัติเมื่ออัปโหลดไปยัง iTunes Connect
Montdidier

84

ฉันก็มีปัญหาเดียวกันและฉันแน่ใจว่าการแจ้งเตือนแบบพุชปิดอยู่โดยค่าเริ่มต้นใน Xcode8 ฉันไม่ได้สังเกตเห็นมัน ระวังมันให้ดี

ความสามารถ


บอกได้ไหมว่าเหตุใดฉันจึงไม่มีส่วนการแจ้งเตือนแบบพุชในบัญชีของฉัน
Anuj

28

มีการเปลี่ยนแปลงใน Xcode 8 โดยที่สิทธิ์ของคุณไม่ได้มาจากตัวระบุแอปอีกต่อไป แต่มาจากความสามารถที่เลือกในเป้าหมายแอปของคุณ ดังนั้นเช่นเดียวกับที่ Unome (OP) กล่าวคุณต้องตรวจสอบว่าเปิดการแจ้งเตือนแบบพุช

สำหรับฉันมันไม่ใช่ปุ่ม "Fix Me" แต่ฉันมีไฟล์สิทธิ์สองไฟล์ (ไฟล์หนึ่งสำหรับการพัฒนาและอีกไฟล์สำหรับการแจกจ่าย) การสลับความสามารถในการแจ้งเตือนแบบพุชจะเป็นการเพิ่มaps-environmentคีย์พร้อมค่าdevelopmentลงในไฟล์สิทธิ์การพัฒนา แต่จะไม่เพิ่มลงในไฟล์สิทธิ์การแจกจ่าย การคัดลอกคีย์เดียวกันไปยังการแจกจ่ายทำได้เพื่อกำจัดอีเมลเตือนเมื่ออัปโหลดไปยัง iTunes Connect

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


นี่คือเรือที่ฉันอยู่ยกเว้นว่าไม่ว่าฉันจะระบุอะไรใน.entitlementsไฟล์ของฉันสำหรับการกำหนดค่า / แบบแผนปัจจุบันจะใช้productionเป็นไฟล์aps-environment.
Albert Bori

การสลับการแจ้งเตือนการกดในความสามารถขัดข้อง Xcode 8 ของฉัน !!
djay

2
@AlbertBori แปลกฉันทำได้แค่แสดงการพัฒนาซึ่งก็ดีเพราะเมื่อเก็บถาวรแล้วมันก็ปรากฏเป็นproductionไฟล์.
timgcarlson

6
@meteors developmentมันเป็นควรจะถูกถ้ามีค่าเป็น จะมีการเปลี่ยนแปลงใน ipa เมื่อโปรเจ็กต์ถูกเก็บถาวร
timgcarlson

2
@timgcarlson สิ่งนี้ไม่ได้เกิดขึ้นระหว่างการเก็บถาวร เกิดขึ้นระหว่างการส่งหรือเมื่อส่งออก นอกจากนี้ยังมีข้อมูลที่เป็นประโยชน์ในการตรวจสอบว่าตั้งค่าอย่างถูกต้องที่นี่: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard

27

จากบันทึกประจำรุ่น Xcode :

Xcode 8 ไม่คัดลอกสิทธิ์สภาพแวดล้อม aps โดยอัตโนมัติจากการจัดเตรียมโปรไฟล์ในเวลาสร้าง พฤติกรรมนี้เป็นไปโดยเจตนา หากต้องการใช้สิทธิ์นี้ให้เปิดใช้งานการแจ้งเตือนแบบพุชในบานหน้าต่างความสามารถของตัวแก้ไขโปรเจ็กต์หรือเพิ่มการให้สิทธิ์ลงในไฟล์สิทธิ์ของคุณด้วยตนเอง (28076333)

นี่เป็นการเปลี่ยนแปลงที่ยอดเยี่ยมเนื่องจากเป็นเรื่องแปลกอยู่เสมอที่การให้สิทธิ์ของ aps-environment ไม่จำเป็นต้องใช้ plist แต่คนอื่น ๆ ก็ทำเช่นนั้น

สำหรับผู้ที่ไม่ต้องการเพียงแค่กด "Fix Me" แบบสุ่มสี่สุ่มห้าและไม่มีไฟล์การให้สิทธิ์อยู่ในขณะนี้ไฟล์นี้เป็นเพียงไฟล์ plist ซึ่งอ้างอิงในการตั้งค่าการสร้างของโปรเจ็กต์ของคุณภายใต้ "Code Signing Entitlements"


1
ฉันไม่พบคำพูดนั้นในบันทึกย่อที่เชื่อมโยง!
Iulian Onofrei

ฉันไม่รู้ว่าใครโหวตความคิดเห็นของฉันและมีอะไรผิดพลาด แต่ตอนนี้ฉันสามารถหาได้เช่นกัน
Iulian Onofrei

13

หลังจากต่อสู้กับ Xcode 8 มาทั้งวันเราไม่สามารถเข้าใจได้ว่าเหตุใดจึงaps-environmentไม่เพิ่มการพัฒนาในการสร้างการแก้ไขข้อบกพร่องของเรา มันหายไปจากส่วนสิทธิ์ในแอพที่สร้างขึ้นสำหรับการทดสอบการดีบัก ... แม้ว่าเราจะเปิดใช้งานความสามารถใหม่และมีไฟล์การให้สิทธิ์อยู่ก็ตาม ปัญหาคือต้องตั้งค่าไฟล์การให้สิทธิ์สำหรับ SDK ใด ๆ ในการตั้งค่าการสร้าง Xcode สำหรับการแก้ปัญหาการให้สิทธิ์

ภาพหน้าจอ


ฉันไม่คิดว่าจะมีความแตกต่างระหว่างการตั้งค่าสำหรับไฟล์ Debugคีย์และการตั้งค่าสำหรับDebug> Any SDKหนึ่งเนื่องจากค่าหลังใช้เพื่อแทนที่ค่าสำหรับ SDK เฉพาะ
Iulian Onofrei

นี่คือทางออกสำหรับฉัน
Himanth

หลังจากต่อสู้กับเรื่องนี้มาตลอดทั้งเช้านี่ก็เป็นปัญหาที่ฉันพบเช่นกัน การสลับความสามารถการสร้างโปรไฟล์การจัดเตรียมไม่มีการทำงานใด ๆ สิ่งนี้ได้
Dave S

นี่ยังคงเป็นวิธีแก้ปัญหาที่ถูกต้องในบางกรณีบน Xcode 8.3.3
แดน

ฉันหวังว่าฉันจะสามารถโหวตได้เป็นล้านครั้ง ฉันดิ้นรนมาหนึ่งสัปดาห์แล้วและนี่คือทางออก แค่พิมพ์เส้นทางของไฟล์ลงใน Code Signing Entitlements ที่ด้านบนไม่เพียงพอต้องทำในส่วน "Any SDK" ด้วย นี่คือกุญแจสำคัญในการแก้ปัญหาสำหรับฉัน
Robert Bentley

7

ฉันได้รับอีเมลเดียวกันจาก Apple โดยใช้ XCode 7.3.1 สิ่งที่ฉันทำเพื่อแก้ปัญหาคือ:

  1. ภายใต้ความสามารถ> ตั้งค่าการแจ้งเตือน PUSH ตามที่ระบุไว้ในคำตอบของ @Bruce Tsai
  2. ภายใต้ Build-Settings> Code Signing> Code Signing Identity ตั้งค่าใบรับรองผู้พัฒนาสำหรับการดีบักและใบรับรองการแจกจ่ายสำหรับรีลีสดังที่แสดงในรูปภาพ:

ใส่คำอธิบายภาพที่นี่ ใส่คำอธิบายภาพที่นี่


สวัสดีในความสามารถฉันไม่ได้รับความสามารถ> ตั้งค่าการแจ้งเตือน PUSH
Anuj

@Anuj ฉันเพิ่มสกรีนช็อตที่ควรจะอยู่ใน Xcode ของคุณ
Ruben

5

หากคุณใช้เฟรมเวิร์ก Firebase และไม่ได้ใช้การแจ้งเตือนแบบพุชมีวิธีแก้ปัญหาสองวิธี 1. เพียงแค่ใส่ข้อความ 'ปัญหา' ที่จะส่งถึงทั้งทีมของคุณทุกครั้งที่อัปโหลดไบนารี แอปจะยังคงได้รับการยอมรับว่าเป็นสิ่งที่ส่งตราบเท่าที่คุณไม่ได้ใช้การแจ้งเตือนจริงๆคุณสามารถเพิกเฉยต่อคำเตือนได้ หรือ 2. ทำเช่นนี้: https://stackoverflow.com/a/46802075/7529450 การดำเนินการนี้จะลบการแจ้งเตือนทางอีเมลที่น่ารำคาญและได้รับการยอมรับว่าเป็นการส่งด้วย


4

ฉันปิดการจัดการการลงนามโดยอัตโนมัติ

การจัดการการลงชื่อโดยอัตโนมัติปิดอยู่สำหรับฉันฉันตรวจสอบแล้วและทำงานได้ดีสำหรับฉัน


3

การใช้ Xcode 9 push Notifications ถูกเปิดใช้งาน

ฉันลองปิด / เปิดใช้งานความสามารถPush Notificationอีกครั้ง (ไม่ทำงาน)

ฉันพยายามปิดการใช้งาน / เปิดใช้งานโดยอัตโนมัติจัดการลงนาม (ไม่ทำงาน)

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


2

สำหรับฉันปัญหาเกิดจากมีไฟล์สิทธิ์สองไฟล์: Entitlements-Debug.plistและEntitlements-Release.plist. และมีเพียงหนึ่งในนั้นเท่านั้น (Debug) ที่ต้องการการตั้งค่าในนั้น

การเปลี่ยนค่าหลาย ๆ ค่าของการตั้งค่าบิลด์> การเซ็นชื่อ> การให้สิทธิ์การเซ็นโค้ดเป็นค่าเดียวMyAppName/MyAppName.entitlementsแล้วเปิดใช้งานความสามารถอีกครั้ง> การแจ้งเตือนแบบพุชตัวสลับการเป็นเคล็ดลับสำหรับฉัน

หวังว่าจะช่วยได้


0

หนึ่งในตัวเลือกอื่น ๆ ที่ทำงาน: คัดลอกวางแหล่งที่มาของเข้าAppName/Entitlements-Debug.plistAppName/Entitlements-Release.plist

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