จะแก้ไขสตริง“ ไม่พบสตริงการให้สิทธิ์ 'aps-environment' ที่ถูกต้องสำหรับแอปพลิเคชัน” ใน Xcode 4.3 ได้อย่างไร


153

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

ที่นี่คือที่ที่ฉันต้องไป (โปรดทราบว่าฉันใช้ Xcode 4.3 และพยายามเริ่มปรับใช้กับ iOS 5.1 เป็นครั้งแรกและฉันรวบรวมว่าบางสิ่งอาจเปลี่ยนไปเมื่อเร็ว ๆ นี้เทียบกับ Xcode เวอร์ชันก่อนหน้านี้ แต่อีกครั้งฉันใหม่ทั้งหมด สิ่งนี้ - และพบว่ามันสับสนและสับสนอย่างสมบูรณ์):

1) ฉันมีโปรไฟล์การจัดสรรใน iPhone ซึ่งเปิดใช้งานการพุช

2) ในโครงการทดสอบ Xcode ของฉันฉันได้รับโปรไฟล์การจัดสรรที่เลือกเป็นข้อมูลประจำตัวการเซ็นชื่อ (ในการตั้งค่า Build> การเซ็นรหัส)

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

3) ฉันมีตัวระบุบันเดิลของฉันภายใต้สรุปและข้อมูล> ตั้งค่าคุณสมบัติเป้าหมาย iOS ที่กำหนดเองอย่างถูกต้อง * (ฉันคิดว่า ??)

4) ฉันได้รับการลงทะเบียนสำหรับการแจ้งเตือนประเภทที่ถูกเรียกในตัวแทนของฉันเสร็จสิ้นการเปิดใช้งานด้วยตัวเลือก

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

6) ฉันได้ทำการเปิดใช้งาน Entitlements ภายใต้สรุป

7) ด้านล่างที่ไฟล์ Entitlements ที่เลือกคือ Tinker6 (ชื่อของโครงการทดสอบของฉัน) ซึ่งสร้างขึ้นโดยอัตโนมัติเมื่อฉันเลือกเปิดใช้งานการให้สิทธิ์

8) ในแฟ้ม Tinker6.entitlements ฉันมีดังต่อไปนี้ (ซึ่งผมได้รวบรวมถูกต้องขึ้นอยู่กับการโพสต์ที่แตกต่างกันทั่วเว็บ แต่ที่ผมไม่สามารถหาอะไรที่ชัดเจนจากแอปเปิ้ลเอง):

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

Updated

9) นอกจากนี้ฉันได้ลองทุกสิ่งโดยไม่ต้องมีไฟล์การให้สิทธิ์และได้รับผลลัพธ์เหมือนกัน

10) เนื้อหาไฟล์ mobileprovision ของฉันมีการให้สิทธิ์อย่างถูกต้อง (ฉันได้ตรวจสอบหมายเลขและโดเมน แต่มีโครงสร้างเหมือนกัน):

<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
    <string>12355456A7.*</string>
</array>

/ อัปเดตสิ้นสุด

เมื่อฉันพยายามเรียกใช้สิ่งนี้บนอุปกรณ์ของฉันฉันได้รับข้อผิดพลาดต่อไปนี้ในเอาต์พุต Xcode:

2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: 
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' 
entitlement string found for application" UserInfo=0x24a3b0 
{NSLocalizedDescription=no valid 'aps-environment' entitlement string 
found for application}

ฉันได้ลองตั้งค่า get-task-allow ให้เป็น NO, aps-environment กับการผลิต, ชุดค่าผสมที่เป็นไปได้ทั้งสี่แบบ, สิ่งเดียวกัน

ฉันจะผ่านสิ่งนี้ไปได้อย่างไร เอกสารที่ชัดเจนเกี่ยวกับเรื่องนี้อยู่ที่ไหน

- พื้นหลังเพิ่มเติมดังนี้ -

* เท่าที่เป็นรหัสบันเดิลฉันยังไม่ชัดเจนว่าควรตั้งค่าอย่างไรเกี่ยวกับรหัสแอปและรหัสโปรไฟล์ในโปรไฟล์การจัดเตรียม ในพอร์ทัลการจัดสรรภายใต้รหัสแอปฉันมีสิ่งนี้ (อีกครั้งกวนหมายเลขและโดเมน):

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

และตั้งค่าบันเดิลสองตำแหน่งฉันมีสิ่งนี้:

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

ฉันไม่แน่ใจเลยว่าสิ่งเหล่านี้ถูกต้องหรือควรตั้งค่าหนึ่งหรือทั้งสองเป็น 12355456A7.com.wh ก็ตาม.tinkerแม้ว่าฉันจะลองใช้วิธีก่อนหน้านี้โดยไม่ประสบความสำเร็จก็ตาม

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

คำตอบ:


94

หากคุณสร้างโปรไฟล์การจัดเตรียมก่อนกำหนดapp IDสำหรับการพุชให้ลองสร้างโปรไฟล์การจัดเตรียมใหม่

พอร์ทัลการจัดเตรียม iOS -> การจัดเตรียม -> ใบรับรองของคุณ -> แก้ไข -> ทำการแก้ไข -> ดาวน์โหลดการจัดเตรียมใหม่

ทำงานให้ฉัน ตอนนี้ฉันสามารถใช้งานพุชได้แล้ว


คุณจะชัดเจนมากขึ้นเกี่ยวกับสิ่งที่ "สร้างโปรไฟล์การจัดสรร" ที่ถูกต้องหรือไม่ นี่เป็นขั้นตอนใน XCode ใน Provisioning Portal ใช่ไหม ขอบคุณ!
jwl

2
ในพอร์ทัล เพียงเพิ่มหรือลบอุปกรณ์และการจัดเตรียมของคุณจะถูกสร้างขึ้น หลังจากนั้นดับเบิลคลิกและติดตั้งในพวงกุญแจของคุณ
elp

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

การเพิ่มหรือลบอุปกรณ์เป็นเคล็ดลับในการสร้างการจัดสรรใหม่ของคุณ คุณจำเป็นต้องสร้างใหม่เพื่อใช้การแจ้งเตือนแบบพุชเพราะมันเชื่อมโยงกับรหัสแอพและผลักดันการรับรอง ..
elp

69

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

เนื่องจากคุณยังเห็นข้อความแสดงข้อผิดพลาดเกี่ยวกับการให้สิทธิ์ที่ขาดหายไปฉันสามารถสันนิษฐานได้ว่าตัวเลือกการเซ็นชื่อรหัสไม่ถูกต้องในการตั้งค่าการสร้าง

คุณต้องตรวจสอบให้แน่ใจว่าได้เลือกโปรไฟล์ที่ถูกต้องสำหรับการกำหนดค่า "ดีบั๊ก" และเพื่อความปลอดภัยว่าคุณได้เลือกโปรไฟล์ที่ถูกต้องสำหรับทั้ง "ดีบั๊ก" และโหนดเด็กที่มีป้ายกำกับ "iOS SDK ใด ๆ ":

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

แม้ว่าภาพหน้าจอนี้จะแสดงโปรไฟล์ "Automatic Developer" ที่เลือกไว้ให้เลือกโปรไฟล์การจัดสรรที่แน่นอนที่คุณต้องการจากดรอปดาวน์เพียงเพื่อวัตถุประสงค์ในการทดสอบ อาจเป็นได้ว่า Xcode กำลังเลือกโปรไฟล์ที่แตกต่างจากที่คุณต้องการโดยอัตโนมัติ

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


ต่อ # 2 ในโพสต์ของฉันมีการตั้งค่าอย่างถูกต้องฉันคิดว่าฉันได้เพิ่มภาพหน้าจอที่ชัดเจนเพื่อยืนยัน ฉันได้ลองลบแอพออกอย่างสมบูรณ์แล้วปล่อยทิ้งไว้ 2 วันตามคำแนะนำที่ฉันเห็นที่ไหนสักแห่งที่จะต้องใช้เวลาหนึ่งวันในการรีเซ็ตข้อมูล (ใช่ฉันกำลังจับฟาง!) แต่เมื่อคุณพูดว่า "คุณจำเป็นต้องตรวจสอบให้แน่ใจว่าได้เลือกโปรไฟล์ที่ถูกต้องสำหรับการกำหนดค่า" ดีบั๊ก "" คุณหมายถึงอะไร - ฉันจะเลือกที่ใด
jwl

หากคุณคลิกที่ส่วน "iPhone Developer" หรืออะไรก็ตามที่ตั้งค่าไว้เป็นค่าปัจจุบันคุณจะเห็นรายการดร็อปดาวน์ของโปรไฟล์การจัดสรรทั้งหมดที่ Xcode รู้ ตรวจสอบให้แน่ใจว่าได้เลือกรายการที่ถูกต้องหรือรายการ "ผู้พัฒนาอัตโนมัติ" กำลังเลือกรายการที่ถูกต้อง เมนูแบบเลื่อนลงจะแสดงให้คุณเห็นทุกอย่าง
Mike Weller

และคุณแน่ใจหรือว่าคุณมีโปรไฟล์การจัดสรรล่าสุด เป็นไปได้ไหมที่คุณมีเวอร์ชั่นเก่าก่อนเปิดใช้งานการพุช
Mike Weller

2
ใช่ฉันเชื่ออย่างนั้น สิ่งที่ฉันได้ทำเพื่อรับโปรไฟล์การจัดเตรียมใหม่คือใน Xcode Organizer ลบโปรไฟล์จากทั้ง Library และจากอุปกรณ์จากนั้นกลับมาที่หน้าจอ Library คลิกรีเฟรช สิ่งนี้ดึงมันลงมาจาก Provisioning Portal ฉันเพิ่มสิ่งนี้ลงในอุปกรณ์ และดังที่แสดงด้านบนเนื้อหา XML ish ของไฟล์ mobileprovision จะแสดงการให้สิทธิ์ที่ถูกต้อง
jwl

3
อ๊ะขอโทษ มีความต้องการที่จะเป็นก่อนที่เส้นทาง:- codesign -d --entitlements - /path/to/my.appนอกจากนี้ยังคุ้มค่าที่จุดนี้เพื่อตรวจสอบอีกครั้งว่าคุณอยู่ในไดเรกทอรี Debug-iphoneos เนื่องจากบางครั้ง "Show In Finder" อาจนำคุณไปยังสถานที่ที่ไม่ถูกต้อง
Mike Weller

64

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

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


1
สิ่งนี้ช่วยฉัน !!!! เพียงคลิกปุ่ม ... แก้ปัญหาของฉันที่ฉันทำการดีบั๊กเป็นเวลาหลายชั่วโมง ... Xcode8 เช่นกัน
Veck Hsiao

3
OMG ขอบคุณ! Come on Apple ให้ข้อความแสดงข้อผิดพลาดที่สมเหตุสมผลแก่เรามากขึ้น!
Ferran Maylinch

Xcode 8 ปิดการแจ้งเตือนแบบพุชสำหรับแอปของฉันดังนั้นวิธีนี้จึงใช้งานได้
เควิน

1
ขอบคุณฉันต้องทำขั้นตอนการตั้งค่าอื่น ๆ 3 ครั้งก่อนที่ฉันจะพบสิ่งนี้ ฉันรู้สึกเหมือนคนงี่เง่า แต่ก็เป็นเครื่องมือที่ไม่ดีสำหรับการอนุญาตให้มีปัญหา
Collin Flynn

คุณบันทึกวันของฉันเพื่อน!
oskarko

47

วิธีที่ง่ายที่สุดคือการทำสิ่งนี้จากบัญชีของคุณด้วย Xcode:

ไปที่ Xcode -> Preferences -> เลือก Tab Accounts -> ดูรายละเอียด -> กดปุ่มรีเฟรชที่ด้านล่างซ้าย -> Done

สร้างใหม่และควรใช้งานได้


19

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

Xcode ไม่ถูกต้องเลือกโปรไฟล์การจัดสรรที่ถูกต้องแม้ว่าเราจะเลือกอย่างถูกต้อง

ก่อนอื่นให้ไปที่ผู้จัด บนแท็บอุปกรณ์โปรไฟล์การจัดเตรียมจากรายการไลบรารีให้เลือกโปรไฟล์ที่เราต้องการใช้ คลิกขวาแล้วเลือก "เปิดเผยโปรไฟล์ใน Finder"

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

โปรไฟล์ที่ถูกต้องจะถูกเลือกในหน้าต่าง Finder ที่เปิดอยู่ จดชื่อ

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

ตอนนี้ไปที่ Xcode> Log Navigator เลือกตัวกรองสำหรับ "ทั้งหมด" และ "ข้อความทั้งหมด" ตอนนี้ในระยะสุดท้าย (สร้างเป้าหมาย) ค้นหาขั้นตอนที่เรียกว่า "ProcessProductPackaging" ขยาย หมายเหตุชื่อโปรไฟล์การจัดเตรียม พวกเขาไม่ควรตรงกันหากคุณมีข้อผิดพลาด ป้อนคำอธิบายรูปภาพที่นี่

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

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


นี่เป็นความผิดของฉัน แต่แก้ไขโดยใช้วิธีนี้ ฉันใส่ตัวบ่งชี้ที่แตกต่างจากสิ่งที่ฉันสร้างใบรับรองด้วยในกล่องข้อมูลโดยไม่ตั้งใจ
JavaCoderEx

18

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

แน่นอนว่าจะต้องทำเช่นนี้หากสามารถลบโปรไฟล์การจัดสรรได้ แต่เนื่องจากเป็นไปไม่ได้ฉันไม่ต้องการถ่วงทีมของเราด้วยโปรไฟล์การทดสอบมากมาย ถึงกระนั้นในที่สุดก็หมดความอดทนแล้วก็ลองทำดู Whatevs


การสร้างโปรไฟล์ใหม่และ "สกปรก" แบบเก่าเหมือนที่กล่าวไว้ในคำถาม SO อื่น ๆ ที่ทำงานให้ฉัน: stackoverflow.com/questions/5681172/…
scurioni

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

โปรไฟล์การจัดสรรใหม่ที่มีรหัสแอพเดียวกันและใบรับรองการกระจายแก้ไขปัญหาให้ฉัน +1 :)
Azik Abdullah

18

ลบโปรไฟล์การจัดสรรเก่าจาก XCode ใน Organizer

จากนั้นสร้างโปรไฟล์การจัดเตรียมใหม่สำหรับ id บันเดิลเดียวกันในพอร์ทัลการจัดสรร iOS (หลังจากคุณเปิดใช้งานการพุช)

นำเข้าโปรไฟล์การจัดสรรใหม่ใน XCode ตั้งค่าในการตั้งค่าบิลด์ของแอพ

สร้างรันใช้งานได้

ฉันแค่ทำมัน

ฉันใช้เวลา 10 นาทีจากข้อผิดพลาดสู่ความสำเร็จ


นี่คือหนึ่งที่ทำงานสำหรับฉันด้วย การแก้ไขโปรไฟล์การจัดสรรเก่าและการดาวน์โหลดไม่ได้ผลสำหรับฉัน ขอบคุณ!
prageeth

ในฐานะที่เป็นภาคผนวกที่มีประโยชน์แทนที่จะได้รับโปรไฟล์การจัดสรรใหม่ฉันสามารถลบโปรไฟล์เก่าได้โดยง่าย
ritmatter

1
ฉันอยากจะแนะนำไม่ให้ทำด้วยมือ ใช้github.com/fastlane/PEM
fatuhoku

16

XCode 6.1.1 และบัญชีนักพัฒนา apple หลายบัญชี

คำตอบอีกข้อหนึ่งสำหรับการผสมผสานที่ครอบคลุมนี้แล้ว: ฉันเจอปัญหานี้อีกครั้งในวันนี้และคราวนี้เป็นเพราะฉันมีบัญชีแอปเปิ้ลหลายบัญชี ฉันต้องเพิ่มบัญชีนักพัฒนาที่สองในXCode> การตั้งค่า> บัญชี> ก่อน

ตรวจสอบให้แน่ใจว่าความสามารถในการแจ้งเตือนเปิดอยู่

ต่อไปฉันต้องเปิดใช้งาน In-App Purchase ในแอป (จริง ๆ แล้วไม่จำเป็นต้องทำก่อนหน้านี้) XCode> (หน้าต่างแอป)> เป้าหมาย> ความสามารถ> การซื้อในแอป (และในขั้นตอนนี้ฉันได้รับตัวเลือกให้เลือกใบรับรองที่ถูกต้อง)

โปรดทราบว่าฉันได้เพิ่มใบรับรองที่เปิดใช้งานการพุชโดยดับเบิลคลิกใน Finder

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


ฉันคิดว่าเมื่อฉันเปลี่ยนมาใช้ Xcode 8 เบต้ามันปิดสวิตช์แจ้งเตือนการพุชหรืออะไรบางอย่าง ขอบคุณ
inVINCEable

ขอบคุณนี่คือเหตุผลที่ฉันมีปัญหานี้ รหัสแอปของฉันถูกเปิดใช้งานสำหรับการสั่งซื้อในแอป, ศูนย์เกมเป็นต้น แต่ใน Xcode / ความสามารถพวกเขาทั้งหมดถูกปิดก่อนไม่มีปัญหา นับตั้งแต่อัปเดตเป็น Xcode 8 ฉันมีปัญหานี้แล้ว หลังจากเปิดใช้งาน IAP และศูนย์เกมใน Xcode ปัญหาจะหายไป!
อีธานลอง

11

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

ดังนั้นไปที่

Xcode> ค่ากำหนด> บัญชี> ดูรายละเอียด (เลือกบัญชีของคุณ)

จากนั้นรีเฟรชไฟล์การจัดสรรของคุณ


7

ปัญหาของฉันเป็นเพียงว่าฉันได้ลงนามกับโปรไฟล์การจัดสรรการจัดการตัวแทน Xcode

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


ฉันมีปัญหานี้เช่นกัน Xcode 5 ค่อนข้างดีในการอัพเดทโปรไฟล์การจัดสรร ฉันเพิ่มบริการ APNS ในการพัฒนาในภายหลัง คุณต้องตรวจสอบให้แน่ใจว่าผู้โพสต์ด้านบนระบุว่าโปรไฟล์การจัดสรรของคุณเป็นจริงโปรไฟล์ที่ไม่ซ้ำกับแอพที่คุณกำลังทำงานและไม่ใช่การ์ดเสริม
Michael

@Michael คุณจะทำให้แน่ใจได้อย่างไร ฉันได้ลองเปลี่ยนมันในการตั้งค่าการสร้างของฉัน (ภายใต้การลงนามรหัส) ซึ่งปัจจุบันถูกตั้งค่าเป็นไม่มี เมื่อฉันเลือกโปรไฟล์ที่ถูกต้องและสร้างมันจะเกิดข้อผิดพลาดจากนั้นกลับไปที่โปรไฟล์การจัดสรรตัวแทน
Ian Jamieson

@ ข้อผิดพลาดอะไรที่คุณได้รับ? คุณแน่ใจหรือว่ามันเป็นโปรไฟล์ที่ถูกต้อง?
ไมเคิล

อ่าฉันได้จัดเรียงแล้วฉันจำเป็นต้องดาวน์โหลดใบรับรองที่ถูกต้องไปยัง Mac ของฉันอีกครั้ง ดูเหมือนว่าจะได้ทำเคล็ดลับ ขอบคุณ
Ian Jamieson

ดีใจที่ได้ยิน สิ่งที่ฉันมักจะทำเมื่อดูเหมือนว่าการตั้งค่าถูกต้อง ทำซ้ำ certs ทั้งหมด ดูเหมือนจะเป็นปัญหามากกว่าครั้ง
ไมเคิล

6

ฉันมีปัญหาเดียวกันคือทุกคนและลองใช้เทคนิคข้างต้นทั้งหมดไม่มีอะไรทำงาน ฉันยังลบและเริ่มต้นใหม่ด้วยบัญชีนักพัฒนาที่แตกต่างกัน

สิ่งที่ใช้ได้ผลสำหรับฉันในที่สุดคือ

  1. ทำตามที่แนะนำข้างต้นและสร้าง APP ID
  2. จากนั้นสร้างโปรไฟล์การจัดสรร
  3. อย่าใช้โปรไฟล์ตัวแทนทีม (จัดการโดย xcode หนึ่ง) ในส่วนการพัฒนาของการจัดสรร คุณต้องแยกจากกันโดยใช้รหัสแอปที่คุณได้เปิดใช้งานการแจ้งเตือนแบบพุช วิธีนี้เมื่อคุณพัฒนามันจะมีฟังก์ชั่นการแจ้งเตือนแบบพุชในตัว

ฉันไม่รู้ว่าคุณสามารถเปิดใช้งานสำหรับแอพพลิเคชั่นไวด์การ์ดได้หรือไม่ แต่หลังจากลองใช้คำแนะนำต่าง ๆ อย่างน้อย 12 ข้อและเสียไปสองสามวันฉันหวังว่านี่จะช่วยให้ใครบางคน


2
แต่สิ่งนี้ไม่ได้เพิ่มคำตอบที่มีอยู่ซึ่งให้คำแนะนำนี้แล้ว เห็นได้ชัดว่าแอพพุชต้องการโปรไฟล์ของตัวเอง เอกสารค่อนข้างชัดเจนว่าไม่สามารถใช้โปรไฟล์ตัวแทนสำหรับแอปใด ๆ ที่ต้องการสิทธิ์พิเศษ
แมตต์

1
ฉันได้ทำสิ่งนี้แล้ว แต่แอพของฉันจะเลือกโปรไฟล์การจัดสรรไวด์การ์ดเท่านั้นฉันไม่สามารถบังคับให้เลือกได้เมื่อเปิดใช้งานการแจ้งเตือนแบบพุช
Ian Jamieson

3

คุณพูดถึงโปรไฟล์การจัดสรร แต่ฉันไม่เห็นการกล่าวถึงโปรไฟล์ Apple Push

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

นี่คือบทแนะนำที่ยอดเยี่ยมที่จะนำคุณเข้าสู่ขั้นตอนทั้งหมด:

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

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

ป.ล. ฉันเชื่อว่าคุณไม่ต้องการการให้สิทธิ์อีกต่อไปนี่เป็นเรื่องมรดก

แก้ไข: คุณควรตรวจสอบว่าคุณมีโปรไฟล์ที่จำเป็นบนอุปกรณ์ - ไปที่การตั้งค่าจากนั้นทั่วไป, โปรไฟล์, ตรวจสอบโปรไฟล์ของคุณอยู่ในรายการโดยเฉพาะอย่างยิ่งโปรไฟล์ดันแน่นอน คุณสามารถตรวจสอบได้จากส่วน Organizer ของ XCode ใน Organizer มีสองส่วนที่บอกว่าโปรไฟล์การจัดเตรียม - หนึ่งที่ด้านบนซ้ายในไลบรารี (นี่คือโปรไฟล์ใน XCode ที่คุณใช้ในการลงชื่อ ฯลฯ ) นอกจากนี้คุณจะเห็นส่วนการโทรโปรไฟล์การจัดเตรียมสำหรับอุปกรณ์ที่เชื่อมต่อ เป็นโปรไฟล์ที่ติดตั้งในโทรศัพท์ หากคุณไม่ได้ติดตั้งไว้ในโทรศัพท์มือถือคุณสามารถดาวน์โหลดได้จากเว็บไซต์พอร์ทัลสำรองจากนั้นคลิกที่ปุ่มเพิ่มที่ด้านล่างของหน้าต่าง Organizer

ในขณะที่ในพอร์ทัลการจัดเตรียมคุณควรตรวจสอบว่า Apple Push Profile มีใบรับรอง: - คลิกที่ Provisioning ที่เมนูด้านซ้ายมือ - คุณจะเห็นรายการโปรไฟล์ของคุณเลือกที่จะแก้ไขโปรไฟล์ Push Apple - คุณจะเห็น ส่วนใบรับรองพร้อมรายชื่อผู้พัฒนาหรือผู้ทดสอบ ฯลฯ ที่คุณมีในโครงการของคุณตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายในช่องทำเครื่องหมายแล้ว - คุณจะเห็นส่วนอุปกรณ์ตรวจสอบให้แน่ใจว่าได้เพิ่มอุปกรณ์ที่คุณกำลังทดสอบแล้ว

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


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

นอกจากนี้ฉันได้เพิ่มข้อมูลเกี่ยวกับไฟล์ mobileprovision จริงซึ่งอาจมีประโยชน์
jwl

เป็นจริงฉันไม่ได้ตั้งค่าใด ๆ . เพิ่มเติมเพื่อผลักดันการแจ้งเตือนให้สำเร็จ สิ่งหนึ่งที่ทำให้ฉันสะดุดเมื่อฉันทำมันคือฉันต้องดาวน์โหลด mobileprovision ด้วยตนเองจากนั้นไปที่การสร้างการตั้งค่าและเปลี่ยนการเซ็นชื่อเพื่อให้ตรงกับสิ่งที่เพิ่งดาวน์โหลดในกรณีของฉัน Xcode กำลังเลือก mobileprovision
X Slash

ฉันได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับการให้สิทธิ์สักครู่หนึ่งแล้วมันเป็นปลาเฮอริ่งแดงดูการตอบสนองของ Mike Wellers นั่นคือสิ่งที่ฉันทำในกรณีของฉัน
Gruntcakes

ฉันได้อัปเดตคำตอบพร้อมกับอีกหลายสิ่งเพื่อให้คุณตรวจสอบ
Gruntcakes

2

วิ่งเข้าไปในปัญหาเดียวกันนี้เอง สำหรับฉันปัญหาคือชื่อผลิตภัณฑ์ของฉัน ($ TARGET_NAME) ไม่ได้เป็นตัวพิมพ์ใหญ่ในลักษณะเดียวกับที่แสดงในใบรับรองที่จัดทำโดย Apple ตัวอย่างเช่นฉันมี com.companyid.APNDemo ขณะที่ Apple Cert กำลังใช้ com.companyid.apndemo

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


1

คำตอบข้างต้นมากมายถูกต้อง อย่างไรก็ตามดูเหมือนว่าจะมีข้อผิดพลาดได้มากกว่าหนึ่งข้อเมื่อจัดการกับสิ่งนี้

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

ป.ล. หากยังใช้งานไม่ได้ให้ลองแก้ไขฟิลด์รหัสการเซ็นชื่อรหัสด้วยตนเองด้วย "แก้ไข" เปลี่ยนบรรทัดที่สองด้วยชื่อของชื่อโปรไฟล์การจัดเตรียมที่ถูกต้อง


1

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

codesign --display --entitlements :- path/to/MyApp.app

และตรวจสอบและaps-environmentapplication-identifier


ฉันกำลังประสบปัญหาเดียวกัน แค่อยากถามว่า path-to-app นั้นติดตั้งไว้ในแอพจำลองหรือไม่?
Ajeet

ไม่มันเป็นเส้นทางของแอพที่รวบรวมสำหรับอุปกรณ์จริงในไดเรกทอรีสร้าง xcode
dwery

1

ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อใบรับรองของคุณหมดอายุ

ทางออกคือการต่ออายุใบรับรองและลงนามในใบสมัครด้วย


1

คุณต้องแน่ใจว่าคุณมีโปรไฟล์การจัดสรร ( https://developer.apple.com/account/ios/profile/ ) โปรไฟล์การแจกจ่าย iOS

เมื่อคุณอัปโหลดจาก xCode ไปยัง App Store ต้องแน่ใจว่าคุณมีสภาพแวดล้อม aps ในการให้สิทธิ์ หากไม่มีให้ดาวน์โหลดจากบัญชีดู -> ดูรายละเอียด -> ดาวน์โหลดทั้งหมด


1

ฉันมีปัญหาที่คล้ายกัน ฉันได้รับการตีกลับระหว่าง XCode 7 และ 8 ด้วยเหตุผลหลายประการ เมื่อคุณใช้ 8 ในการสร้างคุณจะต้องใช้ 8 ฉันใช้ Xcode 8 และใช้การเปลี่ยนแปลงที่แนะนำข้างต้นและใช้งานได้



0

ดูเหมือนจะมีบางอย่างที่แปลกประหลาดกับการให้สิทธิ์แบบ 'อัตโนมัติ' ใน Xcode 4.6

มีไฟล์ Entitlement.plist สำหรับแต่ละ SDK ที่:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist

วิธีแก้ปัญหาที่ฉันแก้ไขด้วยคือแก้ไขไฟล์นี้และเพิ่มคีย์ aps-environment ลับ ๆ ล่อๆด้วยตนเองเช่น:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

จากนั้น Xcode กำลังสร้างไฟล์ Xcent ที่ถูกต้องซึ่งมีคีย์ aps-environment ที่:

/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent

คุณสามารถค้นหาตำแหน่งที่สร้างไฟล์ Xcent ของคุณโดยใช้ Log Navigator ของ Xcode
มองหา "ProcessProductPackaging"

น่าเสียดายที่นี่เป็นวิธีเดียวที่ฉันพบว่าสามารถแก้ไขปัญหาได้
(และในที่สุดก็สามารถรับโทเค็นได้ทันที)

แค่สงสัยว่ามีวิธีแก้ปัญหาที่หรูหรากว่านี้อีกหรือไม่
โปรดดูคำถาม SO ของฉันสำหรับรายละเอียดเพิ่มเติมว่า:
Xcode 4.6 การให้สิทธิ์อัตโนมัติไม่ทำงาน - "ไม่มี aps-environment ที่ถูกต้อง"


0

ก่อนที่จะลบและสร้าง AppIDs / โปรไฟล์ใหม่ให้แน่ใจว่า Library และอุปกรณ์ของคุณมีโปรไฟล์ (และถูกต้อง) เหมือนกันติดตั้ง

ฉันเริ่มเห็นข้อผิดพลาดนี้หลังจากย้ายไปยังคอมพิวเตอร์เครื่องใหม่ พุชทำงานอย่างถูกต้องก่อนการโยกย้าย

ปัญหาคือ (duh) ที่ฉันไม่ได้นำเข้าโปรไฟล์ไปยังไลบรารี Xcode บนเครื่องใหม่ (ใน Organizer / อุปกรณ์ภายใต้ Library-> โปรไฟล์การจัดเตรียม)

ส่วนที่สับสนคืออุปกรณ์มีโปรไฟล์ที่ถูกต้องอยู่แล้วและพวกเขาก็ปรากฏตัวขึ้นตามที่คาดไว้ในการตั้งค่าการสร้างดังนั้นทุกอย่างดูถูกต้อง แต่ XCode LIBRARY ไม่มีพวกเขาดังนั้นจึงลงชื่อแอปด้วย ... ? ?


0

นี่คือสิ่งที่แก้ไขให้ฉัน (ฉันได้ลองเปิด / ปิดความสามารถในการสร้างโปรไฟล์การจัดสรร ฯลฯ )

ในแท็บการตั้งค่าการสร้างในการลงนามรหัสสิทธิ์ไฟล์. ทดแทนของฉันไม่ได้ลิงก์สำหรับทุกส่วน เมื่อฉันเพิ่มลงในส่วนSDK ใด ๆข้อผิดพลาดได้รับการแก้ไข

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


0

ฉันลองคำตอบทั้งหมดที่ระบุไว้ที่นี่ แต่ไม่มีใครแก้ไขปัญหาของฉัน ในกรณีของฉันข้อผิดพลาดนี้เกิดจากความผิดพลาดโง่ ๆ ของฉันในการสร้าง Appid ฉันใช้Wildcard App IDแทนการใช้Explicit App IDทำให้เกิดปัญหา

หากคุณต้องการให้แอปพลิเคชันรับการแจ้งเตือนระยะไกล (การแจ้งเตือนแบบพุช) คุณจะต้องใช้ID แอปอย่างชัดเจนเช่นcom.tutsplus.pushแทนcom.tutsplus *

กรุณาหาภาพหน้าจอ ป้อนคำอธิบายรูปภาพที่นี่

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