Xcode 4.3 में "आवेदन के लिए कोई मान्य 'एप्स-एनवायरनमेंट' एंटाइटेलमेंट स्ट्रिंग 'कैसे तय करें?


153

मैं एक बहुत ही सरल आईओएस ऐप बनाने की बहुत कोशिश कर रहा हूं जो पुश नोटिफिकेशन्स को दूर कर सकता है। ऐसा करने का मेरा एकमात्र कारण कुछ अन्य टीम के सदस्यों को उपयोग करने के लिए एक प्रक्रिया स्थापित करना है, और वेब पर कहीं और ऐसे निर्देशों के कार्यशील संस्करण को आज तक नहीं खोज पाया है। हमारी दुकान आईओएस देव के लिए काफी नई है, मैं व्यक्तिगत रूप से आईओएस देव और एक्सकोड के साथ पूरी तरह से अनुभवहीन हूं। मैं ट्यूटोरियल के दसियों के माध्यम से ठोकर खाई है, लेख, और Apple और कहीं और से परेशानी पोस्ट और मुझे लगता है जैसे मैं वहाँ हो सकता है ...

यहाँ मैं कहाँ गया है (नोट मैं Xcode 4.3 का उपयोग कर रहा हूं और शुरू में सिर्फ iOS 5.1 पर तैनात करने की कोशिश कर रहा हूं, और मैं इकट्ठा करता हूं कि कुछ चीजें हाल ही में Xcode के पिछले संस्करणों में बदल गई हैं, लेकिन फिर से मैं सभी के लिए नया हूं। यह - और यह पूरी तरह से भ्रमित और जटिल लग रहा है):

1) मुझे अपने iPhone पर प्रोविजनिंग प्रोफ़ाइल मिली है जिसमें पुश सक्षम है

2) मेरे परीक्षण Xcode प्रोजेक्ट में मुझे वह प्रोविज़निंग प्रोफाइल हस्ताक्षर पहचान के रूप में चुना गया है (बिल्ड सेटिंग्स> कोड साइनिंग में)

यहां छवि विवरण दर्ज करें

3) मुझे अपना बंडल पहचानकर्ता सारांश और जानकारी के तहत मिला है> कस्टम iOS लक्ष्य गुण ठीक से सेट * (मुझे लगता है ??)

4) मुझे रजिस्टर मिल गया है। मेरे प्रतिनिधि के प्रतिनिधि में कॉल किया जा रहा है

5) मैंने अपने प्रतिनिधि में डिवाइस के टोकन या त्रुटि को भरने के लिए सेट किया है।

6) मुझे सारांश के तहत सक्षम एंटाइटेलमेंट मिला है।

7) इसके ठीक नीचे चयनित एंटाइटेलमेंट फ़ाइल Tinker6 (मेरे परीक्षण प्रोजेक्ट का नाम) है, जिसे मैंने सक्षम एंटाइटेलमेंट की जाँच करते समय स्वचालित रूप से जेनरेट किया था।

8) Tinker6.entitlements फाइल में मुझे निम्नलिखित मिला है (जो मैंने इकट्ठा किया है, जो पूरे वेब पर कई अलग-अलग पोस्ट के आधार पर सही है, लेकिन जो मुझे Apple से कुछ भी निश्चित नहीं मिल सकता है):

यहां छवि विवरण दर्ज करें

अपडेट किया गया

9) इसके अलावा, मैंने बिना एंटाइटेलमेंट फ़ाइल के पूरी बात की कोशिश की है, और अनिवार्य रूप से एक ही परिणाम प्राप्त करें।

10) मेरी मोबाइलप्रोविजन फ़ाइल सामग्री में एंटाइटेलमेंट ठीक से शामिल हैं (मैंने संख्या और डोमेन को स्क्रैम्बल किया है लेकिन संरचनात्मक रूप से समान है):

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

मैंने नो-अप्स-एनवायरनमेंट टू प्रोडक्शन, सभी चार संभावित संयोजनों, एक ही चीज़ के लिए गेट-टास्क-एसे-सेटिंग की कोशिश की है।

मैं इसे कैसे पा सकता हूं? इस पर निश्चित दस्तावेज कहां है?

- आगे की पृष्ठभूमि इस प्रकार है -

* जहाँ तक बंडल आईडी की बात है, मैं अभी भी इस बारे में स्पष्ट नहीं हूँ कि यह प्रोविजनिंग प्रोफ़ाइल में ऐप आईडी और प्रोफ़ाइल आईडी के संबंध में कैसे सेट किया जाना चाहिए। App Ids के अंतर्गत प्रोविजनिंग पोर्टल में मेरे पास यह है (फिर से, संख्या और डोमेन को स्क्रैम्बल किया गया):

यहां छवि विवरण दर्ज करें

और दो जगह बंडल आईडी सेट है मेरे पास यह है:

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

मुझे बिल्कुल भी यकीन नहीं है कि ये सही हैं या क्या एक या दोनों को 12355456A7.com.whatever.tinker पर सेट किया जाना चाहिए, हालांकि मैंने इस प्रक्रिया में उन सभी को बिना किसी सफलता के साथ आजमाया है ...

नोट मुझे पता है कि इसी तरह के शीर्षकों के साथ कई पोस्ट हैं, हालांकि वे सभी फ़ाइल नामों और इसके आगे दिए गए तारीख के आधार पर प्रतीत होते हैं, और वास्तव में कोई भी समाधान उपयोगी नहीं लगता है। मुझे उम्मीद है कि मैंने जो बड़े स्तर का विवरण दिया है, वह गुणवत्ता की प्रतिक्रिया देगा। मैं शायद जल्द से जल्द एक इनाम प्रदान करूंगा और यदि आप एक उच्च गुणवत्ता वाला उत्तर देते हैं जो एक समाधान की ओर ले जाता है तो मैं आपको इनाम देने के साथ-साथ ट्विटर और मेरे ब्लॉग के माध्यम से आपके उत्तर को बढ़ावा दूंगा। खासतौर पर अगर आप क्रॉसपोस्ट पोस्ट करते हैं तो यह बहुत ही अच्छा होता है "यहां सटीक 500 कदम हैं, जिन्हें आपको अपने ब्लॉग पर या जो भी हो, प्रोविज़निंग और जो भी हो" सहित सरल पुश नोटिफिकेशन ऐप प्राप्त करने की आवश्यकता है।

जवाबों:


94

यदि आपने app IDपुश के लिए कॉन्फ़िगर करने से पहले अपना प्रोविज़निंग प्रोफाइल बनाया है , तो प्रोविज़निंग प्रोफाइल को फिर से बनाने की कोशिश करें।

iOS प्रोविजनिंग पोर्टल -> प्रोविजनिंग -> आपका सर्टिफिकेट -> EDIT -> एक संपादन करें -> नया प्रावधान डाउनलोड करें

मेरे लिए काम किया। अब मैं पुश का उपयोग करने में सक्षम हूं।


क्या आप इस बारे में अधिक स्पष्ट हो सकते हैं कि वास्तव में "प्रोविज़निंग प्रोफाइल को फिर से बनाना" क्या है? क्या यह प्रोसीडिंग पोर्टल में XCode का एक कदम है, जहां? धन्यवाद!
15:18

2
पोर्टल में। बस एक उपकरण जोड़ें या निकालें और आपकी प्रोविजनिंग उत्पन्न हो जाएगी। उसके बाद, अपने किचेन में डबल क्लिक करें और इंस्टॉल करें।
एलपी

खेद है कि अगर मैं सघन हो रहा हूं, लेकिन इसे डिवाइसेस के तहत जोड़ें / हटाएं? या कहीं प्रश्न में वास्तविक प्रावधान प्रोफ़ाइल के नीचे, और यदि ऐसा है तो बिल्कुल कहाँ?
jwl

उपकरणों को जोड़ना या हटाना आपके प्रावधान को फिर से बनाने के लिए एक चाल है। आप एक पुनर्जीवित करने के लिए पुश अधिसूचना उपयोग करने के लिए है, क्योंकि यह ऐप्लिकेशन आईडी और धक्का certicate से लिंक किया गया .. जरूरत है
हायता

69

सबसे पहले, आपको एंटाइटेलमेंट फ़ाइल की आवश्यकता नहीं है जब तक कि आप कस्टम कुंजी / मूल्य जोड़े नहीं जोड़ रहे हैं जो प्रोविज़निंग प्रोफाइल में मौजूद नहीं हैं। जब आपका ऐप बनाया जाता है, तो प्रोविजनिंग प्रोफाइल के किसी भी एंटाइटेलमेंट को ऐप में कॉपी कर लिया जाएगा।

यह देखते हुए कि आप अभी भी लापता एंटाइटेलमेंट के बारे में एक त्रुटि संदेश देखते हैं, मैं केवल यह मान सकता हूं कि कोड पर हस्ताक्षर करना बिल्ड सेटिंग्स में सही नहीं हैं।

आपको यह सुनिश्चित करने की आवश्यकता है कि "डिबग" कॉन्फ़िगरेशन के लिए सही प्रोफ़ाइल का चयन किया गया है, और सुरक्षित रहने के लिए, कि आपने "कोई भी आईओएस एसडीके" लेबल वाले "डिबग" और बच्चे-नोड दोनों के लिए सही प्रोफ़ाइल का चयन किया है:

यहां छवि विवरण दर्ज करें

हालाँकि यह स्क्रीनशॉट "स्वचालित डेवलपर" प्रोफ़ाइल को दिखाता है, केवल परीक्षण उद्देश्यों के लिए, ड्रॉप डाउन से इच्छित सटीक प्रावधान प्रोफ़ाइल चुनें। यह हो सकता है कि Xcode अपने आप से भिन्न प्रोफ़ाइल को स्वतः ही चुन ले।

एक साफ निर्माण करना भी सुनिश्चित करें, अपने डिवाइस से ऐप को पूरी तरह से हटा दें, आदि यह सिर्फ यह सुनिश्चित करने के लिए है कि आपके पास कुछ पुराने फ़्लिप नहीं हैं।


मेरी पोस्ट में प्रति # 2, यह सही ढंग से सेट है मुझे लगता है, हालांकि मैंने सत्यापित करने के लिए एक स्पष्ट स्क्रीनशॉट जोड़ा है। मैंने ऐप को पूरी तरह से हटाने और इसे 2 दिनों के लिए बंद करने की सिफारिश की है, जिसमें मैंने कहीं न कहीं देखा है कि इसे रीसेट करने के लिए कुछ जानकारी के लिए एक दिन लगता है (हाँ, मैं तिनके पर लोभी हूँ !?)। लेकिन जब आप कहते हैं "आपको यह सुनिश्चित करने की आवश्यकता है कि" डिबग "कॉन्फ़िगरेशन के लिए सही प्रोफ़ाइल का चयन किया गया है" तो वास्तव में आपका क्या मतलब है - मैं इसका चयन कहां करूं?
jwl

यदि आप "iPhone डेवलपर" भाग पर क्लिक करते हैं, या जो कुछ भी वर्तमान मूल्य के रूप में सेट किया गया है, तो आपको उन सभी प्रोविज़निंग प्रोफाइल का ड्रॉपडाउन दिखाई देगा जिनके बारे में Xcode जानता है। सुनिश्चित करें कि सही एक का चयन किया गया है, या "स्वचालित डेवलपर" आइटम सही चुन रहा है। ड्रॉपडाउन आपको सब कुछ दिखाना चाहिए।
माइक वेलर

और क्या आप सुनिश्चित हैं कि आपके पास नवीनतम प्रावधान प्रोफ़ाइल है? क्या यह हो सकता है कि आपके पास एक पुराना संस्करण हो, इससे पहले कि पुश सक्षम किया गया था?
माइक वेलर

2
खैर, हां मैं ऐसा मानता हूं। मैंने नया प्रोविजनिंग प्रोफ़ाइल प्राप्त करने के लिए जो किया है, वह Xcode ऑर्गनाइज़र में है, प्रोफ़ाइल को लाइब्रेरी और डिवाइस दोनों से हटाएं और फिर लाइब्रेरी स्क्रीन पर वापस ताज़ा करें क्लिक करें। इसने इसे प्रोविजनिंग पोर्टल से वापस नीचे खींच लिया। मैंने फिर इसे डिवाइस में जोड़ा। और जैसा कि ऊपर दिखाया गया है, mobileprovision फ़ाइल XML ish सामग्री सही प्रविष्टि दिखाती है
jwl

3
अच, सॉरी। -रास्ते से पहले होने की जरूरत है codesign -d --entitlements - /path/to/my.app:। यह इस बिंदु पर भी दोगुना है कि आप डिबग-आईपोस डायरेक्टरी में हैं, क्योंकि "शो इन फाइंडर" कभी-कभी आपको गलत जगह ले जा सकता है।
माइक वेलर

64

मैंने Xcode 8. में इस मुद्दे का सामना किया है। आपको लक्ष्य-> क्षमताएं-> पुश अधिसूचना को सक्षम करना होगा। स्क्रीनशॉट चेक करें।

यहां छवि विवरण दर्ज करें


1
यह मेरी मदद करो !!!! बस एक बटन पर क्लिक करें ... अपनी समस्या को हल करते हुए कि मैं घंटों तक डिबगिंग करता हूं ... Xcode8, भी।
Veck Hsiao

3
OMG धन्यवाद! Apple पर आओ, हमें एक अधिक उचित त्रुटि संदेश दें!
फेरन मेनलिंच

Xcode 8 ने मेरे ऐप के लिए पुश सूचनाएं बंद कर दीं, इसलिए इस समाधान ने काम किया।
केविन

1
धन्यवाद, मैंने ऐसा करने से पहले 3 बार अन्य सेटअप चरण किए होंगे। मैं एक बेवकूफ की तरह महसूस करता हूं, लेकिन यह भी कि इस समस्या को अनुमति देने के लिए उपकरण खराब हैं।
कॉलिन फ्लिन

तुमने मेरा दिन बचाया, दोस्त!
ऑस्करको

47

सबसे आसान तरीका Xcode के साथ अपने खातों से यह करना है:

Xcode पर प्रमुख -> प्राथमिकताएं -> खाता टैब चुनें -> विवरण देखें -> नीचे बाईं ओर ताज़ा करें बटन -> संपन्न।

फिर से निर्माण करें और यह काम करना चाहिए।


19

ठीक है, मैंने पहले समस्या का सामना किया। चूँकि पुश नोटिफिकेशन के लिए सर्वरसाइड कार्यान्वयन की आवश्यकता होती है, मेरे लिए प्रोफाइल को फिर से बनाना एक विकल्प नहीं था। इसलिए मैंने नया प्रोविजनिंग प्रोफाइल बनाए बिना इस समाधान को पाया।

Xcode सही प्रोविजनिंग प्रोफाइल का ठीक से चयन नहीं कर रहा है, हालांकि हम इसे सही तरीके से चुन रहे हैं।

सबसे पहले आयोजक के पास जाएं। डिवाइस टैब पर, लाइब्रेरी सूची से प्रोविज़निंग प्रोफाइल, उस इच्छित प्रोफ़ाइल का चयन करें जिसका हम उपयोग करने का प्रयास कर रहे हैं। उस पर राइट क्लिक करें और फिर "फाइंडर में प्रोफाइल का खुलासा करें"।

यहां छवि विवरण दर्ज करें

खोली गई फ़ाइंडर विंडो में सही प्रोफ़ाइल का चयन किया जाएगा। नाम नोट करें।

यहां छवि विवरण दर्ज करें

अब Xcode> Log नेविगेटर पर जाएं। "सभी" और "सभी संदेश" के लिए फ़िल्टर का चयन करें। अब अंतिम चरण (बिल्ड टारगेट) में "ProcessProductPackaging" नामक कदम की तलाश करें। प्रावधान प्रोफ़ाइल नाम नोट करें। यदि आपको त्रुटि हो रही है तो उन्हें मेल नहीं करना चाहिए। यहां छवि विवरण दर्ज करें

अब ओपन फाइंडर विंडो में उस दुष्ट प्रोविज़निंग प्रोफाइल को हटा दें जिसे Xcode उपयोग कर रहा है। अब फिर से निर्माण करें। त्रुटि को हल किया जाना चाहिए। यदि इसे हटाने के लिए किसी अन्य दुष्ट प्रोफ़ाइल को खोजने के लिए प्रक्रिया को न दोहराएं।

उम्मीद है की यह मदद करेगा।


यह मेरी गलती थी लेकिन इस पद्धति का उपयोग करके इसे ठीक किया। मैंने गलती से इंफो बॉक्स में एक अलग पहचानकर्ता डाल दिया था, जिसके साथ मैंने प्रमाण पत्र तैयार किया था।
JavaCoderEx

18

जवाब था: शुरू करो, सब कुछ वैसा ही करो लेकिन एक नया प्रोविजनिंग प्रोफाइल बनाओ, और इसे स्थापित करो। वह काम किया। सभी विवरणों (मोबाइल प्रावधान में एंटाइटेलमेंट) का निरीक्षण करना वास्तव में मेरे प्रश्न के सब कुछ के समान है। लेकिन अब यह काम करता है। सेब: वाट?

निश्चित रूप से, ऐसा करना स्पष्ट होगा यदि प्रोविजनिंग प्रोफाइल को हटाना संभव था। लेकिन चूंकि यह संभव नहीं है, इसलिए मैं अपनी टीम को टेस्ट प्रोफाइलों का एक समूह बनाना नहीं चाहता था। फिर भी, अंत में धैर्य खो दिया और वैसे भी कोशिश की, और यह काम करना समाप्त कर दिया। Whatevs।


एक नया प्रोफ़ाइल बनाना और पुराने को "गंदा" करना, जैसा कि इस एसओ में कहा गया है, यह मेरे लिए काम करता है: stackoverflow.com/questions/5681172/…
scurioni

मुझे बस इतना करना था कि पोर्टल के मौजूदा प्रोविजनिंग प्रोफाइल को हटा दिया जाए और इसे फिर से बनाया जाए। आप अपडेट के बाद अब प्रोफाइल को हटा सकते हैं इसलिए नई ऐप आईडी बनाने की कोई आवश्यकता नहीं है।
odyth

एक ही ऐप आईडी और वितरण प्रमाण पत्र के साथ नए प्रोविजनिंग प्रोफाइल ने मेरे लिए समस्या तय कर दी। +1 :)
अज़िक अब्दुल्ला

18

ऑर्गनाइज़र में XCode से पुरानी प्रोविज़निंग प्रोफ़ाइल हटाएं।

फिर, iOS प्रोविजनिंग पोर्टल (आपके द्वारा पुश सक्षम किए जाने के बाद) में एक ही बंडल आईडी के लिए एक नया प्रोविजनिंग प्रोफाइल जेनरेट करें।

XCode में नए प्रोविजनिंग प्रोफाइल को आयात करें, इसे अपने ऐप बिल्ड सेटिंग्स में सेट करें।

निर्माण, भागो, यह काम करता है।

मैंने अभी ये किया।

मुझे त्रुटि से सफलता तक 10 मिनट लगे।


मेरे लिए भी यही काम किया गया है। पुरानी प्रोविजनिंग प्रोफाइल को एडिट करना और डाउनलोड करना मेरे काम नहीं आया। धन्यवाद!
प्रीगेथ

एक उपयोगी परिशिष्ट के रूप में, बल्कि एक नया प्रावधान प्रोफ़ाइल प्राप्त करने से, मैं बस पुराने को हटाकर उसकी जगह करने में सक्षम था
ritmatter

1
मैं अत्यधिक इसे हाथ से नहीं करने की सलाह दूंगा। Github.com/fastlane/PEM का उपयोग करें ।
फतहोकू

16

XCode 6.1.1, और कई ऐप्पल डेवलपर खाते

इसके लिए एक और जवाब पहले से ही काफी व्यापक मिश्रण: मैं आज फिर से इस मुद्दे पर आया, और इस बार यह मेरे कई सेब खातों के कारण था। मुझे पहले XCode> प्राथमिकताएं> खाते> + में दूसरा डेवलपर खाता जोड़ना होगा

सुनिश्चित करें कि पुश अधिसूचना क्षमता पर है

अगला मुझे ऐप में इन-ऐप खरीदारी को स्पष्ट रूप से सक्षम करने की आवश्यकता थी (मुझे पहले ऐसा करने की आवश्यकता नहीं थी)। XCode> (एप्लिकेशन विंडो)> लक्ष्य> क्षमताएं> इन-ऐप खरीदारी चालू (और इस स्तर पर मुझे सही प्रमाणपत्र चुनने का विकल्प दिया गया था)

ध्यान दें कि मैंने पहले ही पुश सक्षम प्रमाणपत्र को फाइंडर में डबल क्लिक करके जोड़ दिया था।

यहां छवि विवरण दर्ज करें


इस पर मेरा सिर लहरा रहा था, मुझे लगता है कि जब मैंने एक्सकोड 8 बीटा पर स्विच किया तो यह मेरे पुश नोटिफिकेशन स्विच या कुछ और बंद हो गया। धन्यवाद
inVINCEable

धन्यवाद, यही कारण है कि मुझे यह समस्या हुई। मेरा ऐप आईडी इन-ऐप-खरीदारी, गेम-सेंटर आदि के लिए सक्षम है, लेकिन Xcode / क्षमताओं में वे सभी पहले बंद कर दिए गए हैं, कोई समस्या नहीं है। जब से Xcode 8 में अपडेट किया गया है, मुझे यह समस्या हो रही है। IAP और गेम सेंटर को Xcode में सक्षम करने के बाद, समस्या दूर हो गई है!
एथन लॉन्ग

11

(Xcode 5) खैर, एक घंटे बिताने के बाद मैंने अपना मुद्दा हल किया। यहां तक ​​कि अगर आप Xcode 5 में प्रोविज़निंग फ़ाइल को फिर से जेनरेट करते हैं, तो आपको मैन्युअल रूप से अपने खाते को अपडेट करना चाहिए। मैंने केवल ऑर्गनाइज़र टैब में प्रोविज़निंग फ़ाइल को बदल दिया जो काम नहीं करता था, Xcode पुरानी प्रोविज़निंग फ़ाइल के साथ बना रहा।

तो जाइए

Xcode> प्राथमिकताएं> खाते> विवरण देखें (अपना खाता चुनें)

इसके बाद अपनी प्रोविजनिंग फाइलों को रिफ्रेश करें।


7

मेरी समस्या बस इतनी थी कि मैं Xcode- प्रबंधित वाइल्डकार्ड प्रोविजनिंग प्रोफाइल के साथ हस्ताक्षर कर रहा था।

जब मैंने एक ऐप-विशिष्ट प्रोफ़ाइल बनाई (और इसे डाउनलोड किया, तो इसे डबल-क्लिक किया, और यह सुनिश्चित किया कि मेरी बिल्ड सेटिंग्स इसे निर्दिष्ट करें), मुझे सफलतापूर्वक APNS डिवाइस टोकन प्राप्त हुआ।


मेरे पास भी यह मुद्दा था। Xcode 5 किसी भी प्रोविजनिंग प्रोफाइल को अपडेट करने में बहुत अच्छा है। मैंने बाद में विकास में APNS सेवा को जोड़ा। आपको यह सुनिश्चित करना होगा कि उपरोक्त पोस्टर बताता है कि आपकी प्रोविज़निंग प्रोफ़ाइल वास्तव में वह प्रोफ़ाइल है जो आपके द्वारा काम कर रहे ऐप के लिए अद्वितीय है और वाइल्ड कार्ड एक नहीं है।
माइकल

@ मिचेल, आप यह कैसे सुनिश्चित करते हैं? मैंने इसे अपनी बिल्ड सेटिंग्स (कोड साइनिंग के तहत) में बदलने की कोशिश की है, जो वर्तमान में किसी के लिए भी सेट नहीं है। जब मैं सही प्रोफाइल चुनता हूं और निर्माण करता हूं, तो यह एक त्रुटि के साथ आता है और फिर वाइल्डकार्ड प्रोविजनिंग प्रोफाइल पर वापस चला जाता है।
इयान जेमिसन

@ian आपको क्या त्रुटि हो रही है? क्या आप सुनिश्चित हैं कि यह एक वैध प्रोफ़ाइल है?
माइकल

आह, मैंने इसे हल कर दिया है, मुझे अपने मैक पर सही प्रमाण पत्र डाउनलोड करने की आवश्यकता है। लगता है कि चाल चल दी है। धन्यवाद।
इयान जेमीसन

सुन के अच्छा लगा। कि मैं आमतौर पर क्या करता हूं जब लगता है कि सेटिंग्स सही हैं। सभी समारोहों को फिर से करें। लगता है कि अधिक से अधिक बार मुद्दा हो सकता है।
माइकल

6

मेरे पास एक ही मुद्दा था बाकी सब था और उपरोक्त सभी कोशिशें कीं, कुछ भी काम नहीं किया। मैंने भी हटा दिया और एक अलग डेवलपर खाते के साथ नए सिरे से शुरू किया।

अंत में मेरे लिए जो काम किया वह था

  1. जैसा कि ऊपर सुझाव दिया गया है और एपीपी आईडी बनाएं
  2. फिर प्रोविजनिंग प्रोफाइल बनाएं
  3. प्रावधान के विकास खंड में टीम वाइल्डकार्ड प्रोफाइल (xcode एक द्वारा प्रबंधित) का उपयोग न करें। आपको उस ऐप आईडी का उपयोग करके एक अलग से एक बनाने की आवश्यकता है जिसे आपने पुश अधिसूचना के लिए सक्रिय कर दिया है। इस तरह जब आप इसे विकसित करते हैं तो इसमें पुश नोटिफिकेशन फंक्शन का निर्माण किया जाएगा।

मुझे नहीं पता कि आप वाइल्डकार्ड ऐप के लिए इसे सक्षम कर सकते हैं, लेकिन कम से कम 12 अलग-अलग सुझावों की कोशिश करने और कुछ दिन खोने के बाद मुझे उम्मीद है कि इससे मुझे कुछ मदद मिलेगी


2
लेकिन यह मौजूदा जवाबों में कुछ नहीं जोड़ता है, जो पहले से ही यह सलाह देता है। स्पष्ट रूप से एक पुश ऐप को अपनी स्वयं की प्रोफ़ाइल की आवश्यकता है; डॉक्स स्पष्ट हैं कि वाइल्डकार्ड प्रोफ़ाइल का उपयोग किसी भी ऐप के लिए नहीं किया जा सकता है, जिसे विशेष अधिकारों की आवश्यकता है।
मैट

1
मैंने ऐसा किया है, लेकिन मेरा ऐप केवल वाइल्डकार्ड प्रोविजनिंग प्रोफाइल का चयन करेगा, मैं इसे पुश सूचनाओं को सक्षम करने के लिए चयन करने के लिए बाध्य नहीं कर सकता।
इयान जेमीसन

3

आप एक प्रावधान प्रोफ़ाइल का उल्लेख करते हैं, लेकिन मुझे Apple पुश प्रोफ़ाइल का कोई उल्लेख नहीं दिखता है।

पुश का उपयोग करने के लिए आपके पास एक पुश प्रोफ़ाइल होनी चाहिए (विकास के लिए दो, जारी करने के लिए एक)। आपके द्वारा बनाए जाने के बाद आपको यह सुनिश्चित करने की आवश्यकता होगी कि इसमें प्रासंगिक प्रमाणपत्र शामिल हैं (नीचे EDIT अनुभाग देखें)।

यह एक उत्कृष्ट ट्यूटोरियल है जो आपको सभी चरणों से गुजारेगा:

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

इस ट्यूटोरियल की तरह पूरी तरह से विस्तृत उत्तर लिखने के लिए मुझे, या किसी और, घंटों और घंटों का समय लगेगा, इसलिए मैं इस ट्यूटोरियल के पहले से मौजूद होने का न तो प्रयास करूंगा और न ही इनाम का दावा करूंगा।

पुनश्च मेरा मानना ​​है कि आपको किसी भी अधिक एंटाइटेलमेंट की आवश्यकता नहीं है, यह एक विरासत चीज है।

संपादित करें: आपको यह भी जांचना चाहिए कि आपके पास डिवाइस पर आवश्यक प्रोफ़ाइल हैं - सेटिंग्स पर जाएं, फिर सामान्य, प्रोफ़ाइल, जांचें कि आपके प्रोफ़ाइल सूचीबद्ध हैं, विशेष रूप से पुश प्रोफ़ाइल बेशक। आप XCode के ऑर्गनाइज़र सेक्शन से भी इसकी जाँच कर सकते हैं। ऑर्गनाइज़र में प्रोविज़न प्रोफाइल कहे जाने वाले दो सेक्शन हैं - एक लाइब्रेरी में सबसे ऊपर बाईं ओर (यह XCode में वह प्रोफाइल है जिसे आप साइन इन करने के लिए उपयोग करते हैं आदि) साथ ही आप एक सेक्शन कॉल प्रोविज़निंग प्रोफाइल देखेंगे जो डिवाइस से कनेक्ट है, यह है वह प्रोफ़ाइल है जो हैंडसेट पर स्थापित है। यदि आपके पास उन्हें हैंडसेट पर स्थापित नहीं किया गया है, तो आप उन्हें प्रोविजनिंग पोर्टल वेबसाइट से डाउनलोड कर सकते हैं, फिर ऑर्गनाइज़र विंडो के निचले भाग में स्थित बटन पर क्लिक करें।

प्रोविजनिंग पोर्टल में, आपको यह भी देखना चाहिए कि Apple पुश प्रोफ़ाइल में प्रमाणपत्र शामिल हैं: - बाएं हाथ के मेनू पर प्रावधान पर क्लिक करें - आपको अपनी प्रोफ़ाइल की एक सूची दिखाई देगी, Apple पुश प्रोफ़ाइल संपादित करने के लिए चुनें - आप देखेंगे एक प्रमाण पत्र अनुभाग, डेवलपर्स या परीक्षकों आदि की सूची के साथ जो आप अपनी परियोजना में हैं, सुनिश्चित करें कि उनके लिए चेक बॉक्स की जाँच की गई है। - आपको एक उपकरण अनुभाग भी दिखाई देगा, सुनिश्चित करें कि जिस डिवाइस पर आप परीक्षण कर रहे हैं वह जोड़ा गया है।

यदि आपके पास XCode या डिवाइस पर कोई पुरानी प्रोफ़ाइल है, तो उन्हें हटा दें और प्रोविज़निंग पोर्टल से सभी नए प्रोफ़ाइलों को डाउनलोड / ताज़ा / इंस्टॉल करें


अगर एंटाइटेलमेंट एक विरासत की चीज है तो मुझे बिना किसी एंटाइटेलमेंट के शिकायत का संदेश क्यों मिल रहा है? मैं पहले से ही बिना किसी भाग्य के पत्र से जुड़े ट्यूटोरियल का अनुसरण कर चुका हूं ... धन्यवाद।
jwl

इसके अलावा, मैंने वास्तविक mobileprovision फ़ाइल के बारे में कुछ जानकारी जोड़ी है जो उपयोगी हो सकती है।
jwl

यह सच है, मैं नोटिफिकेशन को सफलतापूर्वक पुश करने के लिए किसी भी .entitlements की स्थापना भी नहीं करता। जब मैं यह कर रहा था, तो एक चीज ने मुझे थप्पड़ मार दिया था कि मुझे मोबाइलप्रोविजन को मैन्युअल रूप से डाउनलोड करने की आवश्यकता है, फिर सेटिंग्स का निर्माण करने के लिए और पहचानने के लिए पहचान पर हस्ताक्षर करने के लिए जाएं जो अभी डाउनलोड हुआ है, मेरे मामले में, जाहिरा तौर पर एक्सकोड वाइल्ड कार्ड मोबाइलप्रोविजन उठा रहा है।
एक्स स्लैश

मुझे कुछ समय पहले एंटाइटेलमेंट के बारे में एक त्रुटि संदेश मिला, एक लाल हेरिंग, माइक वेलर्स प्रतिक्रिया देखें, यही मैंने अपने मामले में किया था।
बजे

मैंने आपको जांचने के लिए कुछ और चीजों के साथ जवाब अपडेट किया है।
ग्रंटककेस

2

इस मुद्दे को अपने आप में चला। मेरे लिए, मुद्दा यह था कि मेरे उत्पाद का नाम ($ TARGET_NAME) ऐप्पल द्वारा प्रदान किए गए प्रमाण पत्र में प्रस्तुत किए गए तरीके से पूंजीकृत नहीं था। उदाहरण के लिए, मेरे पास com.companyid.APNDemo था जबकि Apple प्रमाणपत्र com.companyid.apndemo का उपयोग कर रहा था।

मैंने अपने लक्ष्य को लोअरकेस में बदल दिया और इसने काम किया। नोट: मेरे लिए सुराग बिल्ड सेटिंग में कोडिंग सेटिंग थी जो मेरे डिफ़ॉल्ट डेवलपर प्रमाणपत्र पर सेट थी; APNTest प्रोविज़निंग प्रोफाइल नहीं।


1

उपरोक्त बहुत सारे उत्तर सही हैं। हालांकि, इससे निपटने के दौरान एक से अधिक संभावित त्रुटि प्रतीत होती है।

जो मेरे पास था वह मेरी ऐप आईडी के साथ एक कैपिटलाइज़ेशन मुद्दा था। किसी कारण से मेरा ऐप आईडी पूंजीकृत नहीं था, लेकिन मेरा ऐप था। एक बार जब मैंने ऐप आईडी को सही कैपिटलाइज़ेशन के साथ फिर से बनाया, तो यह सब आसानी से काम कर गया। उम्मीद है की यह मदद करेगा। हालांकि नरक के रूप में निराशा होती है।

पुनश्च यदि यह अभी भी काम नहीं करता है, तो कोड साइनिंग आइडेंटिटी फ़ील्ड को "एडिट" के साथ मैन्युअल रूप से संपादित करने का प्रयास करें। सही प्रावधान प्रोफ़ाइल नाम के साथ दूसरी पंक्ति बदलें।


1

इसे हल करने में मुझे घंटों लग गए। यह देखते हुए कि कोई व्यक्ति साइन इन करने के लिए कस्टम स्क्रिप्ट का उपयोग कर रहा है और पैक कर रहा है जबकि अन्य अपने आप में xcode का उपयोग कर रहे हैं, आपके ऐप में क्या समाप्त हुआ, यह जांचने का केवल एक ही तरीका है। आप के साथ हकदार डंप

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

और जाँच aps-environmentऔर application-identifier


मैं एक ही समस्या का सामना कर रहा हूँ। बस पूछना चाहता था, क्या ऐप-ऐप सिम्युलेटर पर स्थापित है?
Ajeet

नहीं, यह वास्तविक डिवाइस के लिए संकलित ऐप का पथ है, एक्सकोड बिल्ड डायरेक्टरी में।
dwery

1

यह त्रुटि तब हो सकती है जब आपका प्रमाणपत्र समाप्त हो गया हो।

समाधान प्रमाणपत्र को नवीनीकृत करने और इसके साथ आवेदन पर हस्ताक्षर करने के लिए है।


1

आपको यह सुनिश्चित करने की ज़रूरत है कि आपके पास आपके प्रोविज़निंग प्रोफाइल ( https://developer.apple.com/account/ios/profile/) हैं ) में एक आईओएस वितरण प्रोफ़ाइल है।

जब आप xCode से ऐप स्टोर पर अपलोड करते हैं, तो सुनिश्चित करें कि आपके पास एंटाइटेलमेंट में aps-environment है। यदि नहीं, तो उन्हें दृश्य खातों से डाउनलोड करें -> विवरण देखें -> सभी डाउनलोड करें।


1

मेरा मुद्दा भी ऐसा ही था। मैं कई कारणों से XCode 7 और 8 के बीच उछल रहा हूं। एक बार जब आप निर्माण करने के लिए 8 का उपयोग करते हैं, तो आपको 8 का उपयोग करने की आवश्यकता होगी। मैंने बस Xcode 8 का उपयोग किया और ऊपर दिए गए कुछ परिवर्तनों को लागू किया और यह काम किया।



0

Xcode 4.6 में 'स्वचालित' एंटाइटेलमेंट के साथ कुछ विचित्र प्रतीत होता है।

प्रत्येक SDK के लिए Entitlement.plist फ़ाइल है:

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

एक वर्कअराउंड सॉल्यूशन जो मैं इस फाइल को एडिट करने के लिए आया था और स्नीकी अप्स-एनवायरनमेंट कीज को इस तरह से जोड़ रहा था:

<?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 key शामिल है:

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

आप पा सकते हैं कि Xcode के लॉग नेविगेटर का उपयोग करके आपकी Xcent फ़ाइल कहाँ बनाई गई है,
"ProcessProductPackaging" के लिए देखें।

दुर्भाग्य से, यह एकमात्र तरीका है जो मैंने पाया कि समस्या को ठीक करता है
(और अंत में ठीक से पुश टोकन प्राप्त करने में सक्षम)

बस अगर एक और सुंदर समाधान उपलब्ध है सोच रहा था।
कृपया उस पर अधिक जानकारी के लिए मेरा एसओ प्रश्न देखें:
Xcode 4.6 स्वचालित पात्रता काम नहीं कर रही है - "कोई वैध अप्स-पर्यावरण नहीं"


0

AppID / प्रोफाइल को हटाने और पुनर्जीवित करने से पहले, सुनिश्चित करें कि आपकी लाइब्रेरी और डिवाइस में समान (और सही) प्रोफाइल स्थापित हैं।

नए कंप्यूटर पर माइग्रेट करने के बाद मुझे यह त्रुटि दिखाई देने लगी। माइग्रेशन से पहले पुश सही तरीके से काम कर रहा था।

समस्या यह थी (दोह) कि मैंने नई मशीन पर (लाइब्रेरी के तहत आयोजक / उपकरण में- प्रोविजनिंग प्रोफाइल) Xcode लाइब्रेरी में प्रोफाइल आयात नहीं किया था।

भ्रामक हिस्सा यह था कि DEVICE में पहले से ही सही प्रोफाइल थे और उन्होंने बिल्ड सेटिंग्स में उम्मीद के मुताबिक काम किया था, इसलिए वहां सब कुछ सही लग रहा था, लेकिन XCode LIBRARY के पास उन्हें नहीं था, इसलिए यह एप्लिकेशन के साथ हस्ताक्षर कर रहा था ... ?? ?


0

मेरे लिए यही तय था। (मैं पहले से ही क्षमताओं को चालू / बंद करने की कोशिश कर रहा था, प्रोविजनिंग प्रोफाइल को फिर से बनाना, आदि)।

में बिल्ड सेटिंग्स टैब, में कोड हस्ताक्षर पात्रता , मेरे .entitlements फ़ाइल नहीं सभी वर्गों के लिए लिंक था। एक बार जब मैंने इसे किसी भी SDK अनुभाग में जोड़ा , तो त्रुटि हल हो गई।

यहां छवि विवरण दर्ज करें


0

मैंने यहां सूचीबद्ध सभी उत्तरों की कोशिश की, लेकिन किसी ने मेरे मुद्दे को हल नहीं किया। मेरे मामले में यह त्रुटि एपिड निर्माण में मेरी मूर्खतापूर्ण गलती के कारण है। मैंने वाइल्डकार्ड ऐप आईडी का उपयोग किया इसके बजाय स्पष्ट ऐप आईडी का उपयोग करने से समस्या हुई

यदि आप रिमोट नोटिफिकेशन (पुश नोटिफिकेशन) प्राप्त करने के लिए आवेदन चाहते हैं, तो आपको com.tutsplus.push के बजाय एक Explicit App ID , जैसे com.tutsplus.push , का उपयोग करना होगा। *

कृपया स्क्रीनशॉट देखें, यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.