ไม่พบสตริงสิทธิ์ "aps-environment" ที่ถูกต้องสำหรับแอปพลิเคชันบน App Store


105

ดังนั้นฉันจึงมีแอพนี้ชื่อว่า Dripper ซึ่งฉันได้วางจำหน่ายเมื่อประมาณหนึ่งเดือนที่แล้วและอัปเดตเมื่อสองสามวันก่อน การอัปเดตได้เพิ่มการแจ้งเตือนแบบพุชและการปรับแต่งเล็กน้อย ฉันทดสอบด้วย sandbox-apn โดยใช้โปรไฟล์การพัฒนาและสิ่งต่างๆก็ใช้งานได้ดี จากนั้นฉันก็เปลี่ยนสิ่งต่างๆไปที่ production-apn และผลักดันมันไปสู่การทดลองบินอีกครั้งสิ่งต่างๆก็ทำงานได้อย่างสมบูรณ์แบบ เมื่อฉันวางการอัปเดตในตลาดและดำเนินการแล้วฉันสังเกตว่าฉันไม่ได้รับการลงทะเบียนแบบพุชใหม่บนเซิร์ฟเวอร์ ฉันดูบันทึกคอนโซลของอุปกรณ์และพบสิ่งนี้:

4 ธ.ค. 17:55:15 Ina-touch-it Coffco [1210]: การลงทะเบียนสำหรับการแจ้งเตือนระยะไกล
4 ธันวาคม 17:55:15 Ina-touch-it SpringBoard [52]: ไม่พบสตริงสิทธิ์ "aps-environment" ที่ถูกต้องสำหรับแอปพลิเคชัน 'Dripper': (null) การแจ้งเตือนจะไม่ถูกส่ง
4 ธ.ค. 17:55:15 น. Ina-touch-it Coffco [1210]<Warning>: Failed to register with error : Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x174270900 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}

ฉันสับสนเล็กน้อยเพราะฉันคิดว่า production-apn จะทำงานเหมือนกันระหว่าง ad-hoc และ app store builds

นี่คือรหัสแอปของฉันและสิทธิ์ -> http://i.stack.imgur.com/uf4pB.png

นี่คือโปรไฟล์การจัดเตรียมสำหรับร้านค้าแอป -> http://i.stack.imgur.com/AYOV5.png


นี่คือการลงนามและอัปโหลด -> i.stack.imgur.com/AziCI.png การตั้งค่าการสร้าง -> i.stack.imgur.com/j2TFG.png
Jessiah

คำตอบ:


283

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

คลิกที่. xcodeproj -> Capabilities -> Enable Push Notification


15
ใน XCode 8 ฉันเห็นข้อผิดพลาดในส่วนนี้ว่าต้องเพิ่มไฟล์สิทธิ์ ฉันคลิกที่นี่เพื่อแก้ไขแล้วมันก็ใช้ได้
Pellet

เพิ่งโผล่ขึ้นมาเมื่อเริ่มพัฒนาใน Xcode 8 และสิ่งนี้ได้รับการแก้ไขแล้ว ขอบคุณ!
Kody R.

ก่อนหน้านี้ทำงานกับ Xcode 7.3 แต่จู่ๆก็ไม่ได้ลงทะเบียนบน Xcode 8 แต่สิ่งนี้แก้ไขปัญหาของฉันได้โดยเปิดใช้งานความสามารถในการแจ้งเตือนแบบพุช
Vinod Rathod

Apple ตัดสินใจซ่อนตัวเลือกนี้ไว้ใน Xcode 8.1 โปรดแจ้งให้เราทราบหากมีใครสามารถหาได้
Thomas Sebastian

ฉันไม่ได้รับตัวเลือก "พุชการแจ้งเตือน" ในรายการความสามารถ เป็นสิ่งที่เกี่ยวข้องกับข้อเท็จจริงที่ว่า XCode กำลังสร้างโปรไฟล์การจัดเตรียมของฉันโดยอัตโนมัติ (ฉันยังใหม่กับ iOS dev ดังนั้นฉันอาจคิดผิด ... ) ฉันต้องลงชื่อเข้าใช้บัญชีผู้พัฒนาของฉันและสร้างโปรไฟล์การจัดเตรียมสำหรับแอปของฉันด้วยตนเองก่อนที่จะแสดง Push Notifications ในรายการความสามารถ ในที่สุดการเปิดใช้งานจะช่วยแก้ไขปัญหานี้ได้
Max Mumford

103

ฉันแก้ไขปัญหานี้ดังนี้:

  • ไปที่ Xcode "ค่ากำหนด"
  • ไปที่แท็บ "บัญชี"
  • เลือก Apple ID ของฉันแล้วคลิก "ดูรายละเอียด"
  • คลิกที่ลูกศรที่มุมล่างซ้ายเพื่อรีเฟรช
  • คลิก "เสร็จสิ้น"

แล้วลองอีกครั้ง!

ที่มา:


6
จากนั้นคุณควรเลือกโปรไฟล์การจัดเตรียมที่ถูกต้องในการตั้งค่าการสร้าง
Hashem Aboonajmi

2
ในกรณีของฉันฉันต้องสร้างโปรไฟล์การจัดเตรียมใหม่ในศูนย์พัฒนา จากนั้นดาวน์โหลดโปรไฟล์และใบรับรองทั้งหมดอีกครั้งผ่าน Xcode> การตั้งค่า> บัญชี> Apple ID ของคุณ> ปุ่มดูรายละเอียดที่มุมขวา> ปุ่มดาวน์โหลดทั้งหมด หลังจากนั้นควรใช้งานได้อีกครั้ง
blackjacx

2
ฉันพบว่ามันน่าเศร้าที่มีข้อบกพร่องมากมายในกระบวนการผลักดันและการปรับใช้ วิธีเดียวที่ฉันสามารถทนต่อสิ่งเหล่านี้ได้คือทำทุกอย่างด้วยตนเอง 100% และรู้ว่า Xcode กำลังพยายามทำอะไรและจัดการข้อมูลประจำตัวของพวงกุญแจและโปรไฟล์การจัดเตรียมในระบบไฟล์และผ่านยูทิลิตีการกำหนดค่า iPhone
Tom Pace

57

คุณต้องเปิดใช้งาน Target—> ความ สามารถ—> การแจ้งเตือนแบบพุช ฉันประสบปัญหานี้โดยใช้ Xcode 8ป้อนคำอธิบายภาพที่นี่


18

ปัญหาดังกล่าวเกิดจากโปรไฟล์การจัดเตรียมปัจจุบันไม่มีข้อมูล APNS เนื่องจากโปรไฟล์การจัดเตรียมถูกสร้างขึ้นก่อนที่จะสร้างใบรับรอง APNS

ดังนั้นในการแก้ปัญหาให้สร้างโปรไฟล์การจัดเตรียมใหม่และเลือกโปรไฟล์การจัดเตรียมใน Xcode ถ้าอย่างนั้นคุณก็เสร็จแล้ว

นอกจากนี้เมื่อคุณเพิ่มการพุชฉันเชื่อว่าคุณได้อัปเดตใบรับรองในพวงกุญแจด้วย


โปรไฟล์ที่ฉันใช้ถูกสร้างขึ้นหลังจากที่ฉันสร้างใบรับรองสำหรับ apn พุชการผลิต มีสิ่งที่ฉันสามารถทำได้เพื่อยืนยันว่าหายไปหรือมีข้อมูล apns หรือไม่?
Jessiah

@ เจสสิยาห์: ไม่ .. มันเหมือนกับว่าเราต้องเดินตามรอยเท้าของ Apple
Fahim Parkar

6

เกี่ยวกับ Xcode 9 คำตอบบางคำอาจล้าสมัยหรือไม่สมบูรณ์เพื่อแก้ไขปัญหาเฉพาะนี้

นี่คือขั้นตอนในการปฏิบัติตามสำหรับฉัน:

1. สร้างโปรไฟล์การจัดเตรียม

( FCM ไม่ใช่ข้อกำหนดเบื้องต้นสำหรับการแจ้งเตือนแบบพุช แต่คำแนะนำของพวกเขานั้นชัดเจนอย่างน่าอัศจรรย์นี่คือลิงค์ )

ในการทดสอบแอปของคุณในระหว่างการพัฒนาคุณต้องมีโปรไฟล์การจัดเตรียมสำหรับการพัฒนาเพื่ออนุญาตให้อุปกรณ์ของคุณเรียกใช้แอปที่ยังไม่ได้เผยแพร่บน App Store

  1. ไปที่ Apple Developer Member Center แล้วลงชื่อเข้าใช้
  2. ไปที่ใบรับรองตัวระบุและโปรไฟล์
  3. ในเมนูแบบเลื่อนลงที่มุมบนซ้ายให้เลือก iOS, tvOS, watchOS หากยังไม่ได้เลือกจากนั้นไปที่โปรไฟล์การจัดเตรียม> ทั้งหมด
  4. คลิกปุ่ม + เพื่อสร้างโปรไฟล์การจัดสรรใหม่
  5. เลือก iOS App Development เป็นประเภทโปรไฟล์การจัดสรรจากนั้นคลิกดำเนินการต่อ
  6. ในเมนูแบบเลื่อนลงเลือกรหัสแอปที่คุณต้องการใช้จากนั้นคลิกดำเนินการต่อ
  7. เลือกใบรับรองการพัฒนา iOS ของรหัสแอปที่คุณเลือกในขั้นตอนก่อนหน้าจากนั้นคลิกดำเนินการต่อ
  8. เลือกอุปกรณ์ iOS ที่คุณต้องการรวมไว้ในโปรไฟล์การจัดเตรียมจากนั้นคลิกดำเนินการต่อ อย่าลืมเลือกอุปกรณ์ทั้งหมดที่คุณต้องการใช้สำหรับการทดสอบของคุณ
  9. ป้อนชื่อสำหรับโปรไฟล์การจัดสรรนี้ (เช่นโปรไฟล์การพัฒนาแอปตัวอย่าง Firebase) จากนั้นคลิกสร้าง
  10. คลิกดาวน์โหลดเพื่อบันทึกโปรไฟล์การจัดเตรียมลงใน Mac ของคุณ
  11. ดับเบิลคลิกที่ไฟล์ Provisioning Profile เพื่อติดตั้ง

2. เปิดใช้งานความสามารถในการแจ้งเตือนแบบพุช

  1. ไปที่ตัวแก้ไขโครงการจากคู่มืออย่างเป็นทางการ ป้อนคำอธิบายภาพที่นี่
  2. ในส่วนความสามารถเปิดใช้งานการแจ้งเตือนแบบพุช ป้อนคำอธิบายภาพที่นี่

4

ฉันมีปัญหาเดียวกันกับการใช้ iOS 8.0 และเวอร์ชันที่สูงกว่า ฉันไม่ได้รับโทเค็นอุปกรณ์และให้ข้อผิดพลาด: "ไม่พบสตริงสิทธิ์" aps-environment "ที่ถูกต้องสำหรับแอปพลิเคชัน"

ฉันแก้ไขโดยใช้ขั้นตอนด้านล่าง

  • ฉันได้สร้างโปรไฟล์การจัดสรรใหม่สำหรับรหัสแอปแล้ว
  • เพิ่มเข้าไปใน xcode
  • โครงการไปที่ Xcode "ค่ากำหนด"
  • ไปที่แท็บ "บัญชี" เลือก Apple ID ของฉันแล้วคลิก "ดูรายละเอียด"
  • เลือกโปรไฟล์การจัดเตรียมของคุณ
  • คลิกที่ลูกศรที่มุมล่างซ้ายเพื่อรีเฟรช
  • คลิก "เสร็จสิ้น"

และตอนนี้เรียกใช้โครงการได้อย่างแน่นอน


3

ด้วยเหตุผลบางอย่างการแก้ปัญหาของ Wei ไม่ได้ผลสำหรับฉัน เมื่อคลิกแก้ไขการให้สิทธิ์ Xcode จะสร้างไฟล์สองไฟล์และยังไม่ทำงานแน่นอนไฟล์สิทธิ์ที่สร้างขึ้นนั้นว่างเปล่า

สิ่งนี้มีสาเหตุ (เห็นได้ชัด) โดย PRODUCT_NAME ของโครงการค่อนข้างยาวและมีการเว้นวรรคและตัวอักษร "ä" และ "ö" หลังจากเปลี่ยนเป็นเวอร์ชันสั้นที่มีตัวอักษรภาษาอังกฤษเท่านั้นการแก้ไขโดย Wei ทำงานได้อย่างถูกต้อง


1

ฉันใช้เวลาสักพักในการค้นหาว่าอะไรทำให้เกิดข้อผิดพลาดในการให้สิทธิ์สภาพแวดล้อม aps ที่ไม่ถูกต้อง ปัญหาคือมีไฟล์. entitlements สองไฟล์ในโปรเจ็กต์ XCode หนึ่งคือแพลตฟอร์ม / ios // สิทธิ์และอีกรายการหนึ่งคือแพลตฟอร์ม / ios // ทรัพยากร / .entitlements และการให้สิทธิ์ที่เหมาะสมจะปรากฏในไฟล์เดิมเท่านั้นในขณะที่ XCode ได้รับการกำหนดค่าให้ใช้ไฟล์หลัง ฉันอัปเดตไฟล์หลังด้วยตนเองและทุกอย่างก็เริ่มทำงาน อีกทางเลือกหนึ่งในการแก้ไขปัญหานี้คือการเปลี่ยน .entitlements ที่ใช้โดย XCode ซึ่งสามารถทำได้ใน Build Settings -> Signing -> Code Signing Entitlements config param

ฉันไม่แน่ใจว่าเหตุใดจึงมีไฟล์ .entitlements สองไฟล์ใน XCode เป็นไปได้ไหมว่าปลั๊กอิน Cordova push ได้สร้างปลั๊กอินตัวที่สองขึ้นมา (ฉันกำลังพัฒนาแอพมือถือแบบไฮบริดคอร์โดวา) และตำแหน่งที่ถูกต้องสำหรับไฟล์. entitlements คืออะไร?


-1

ฉันประสบปัญหานี้และแก้ไขได้ด้วยวิธีแก้ปัญหาแรก

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

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