ऐप के लिए पुश नोटिफिकेशन सेटिंग्स को रीसेट करें


173

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

संवाद (द्वारा शुरू किया गया registerForRemoteNotificationTypes), हालांकि, प्रति ऐप केवल एक बार दिखाई देता है। मैं अपने ऐप की iPhone OS की मेमोरी को कैसे रीसेट करूं। एप्लिकेशन को हटाना और पुनः इंस्टॉल करना मदद नहीं करता है।

जवाबों:


300

तकनीकी नोट TN2265: समस्या निवारण पुश सूचनाएँ

पुश सूचनाओं के लिए पहली बार पुश-सक्षम ऐप पंजीकृत होता है, iOS उपयोगकर्ता से पूछता है कि क्या वे उस ऐप के लिए सूचनाएं प्राप्त करना चाहते हैं। एक बार जब उपयोगकर्ता ने इस अलर्ट पर प्रतिक्रिया दी है तो इसे फिर से प्रस्तुत नहीं किया जाता है जब तक कि डिवाइस को बहाल नहीं किया जाता है या कम से कम एक दिन के लिए ऐप को अनइंस्टॉल नहीं किया गया है।

यदि आप अपने ऐप के पहली बार चलने का अनुकरण करना चाहते हैं, तो आप ऐप को एक दिन के लिए अनइंस्टॉल कर सकते हैं। आप वास्तव में एक दिन या उससे अधिक सिस्टम घड़ी को सेट करके एक दिन इंतजार किए बिना बाद को प्राप्त कर सकते हैं, डिवाइस को पूरी तरह से बंद कर सकते हैं, फिर डिवाइस को चालू कर सकते हैं।

अपडेट करें: जैसा कि नीचे टिप्पणी में कहा गया है, इस समाधान ने iOS 5.1 के बाद से काम करना बंद कर दिया है। मैं Apple के साथ बग दर्ज करने के लिए प्रोत्साहित करूंगा ताकि वे अपने प्रलेखन को अपडेट कर सकें। वर्तमान समाधान डिवाइस की सामग्री और सेटिंग्स को रीसेट करने लगता है।

अपडेट: टेक नोट को नए स्टेप्स के साथ अपडेट किया गया है जो iOS 7 की तरह सही तरीके से काम करते हैं।

  1. डिवाइस से अपना ऐप हटाएं।
  2. डिवाइस को पूरी तरह से बंद करें और इसे वापस चालू करें।
  3. सेटिंग> जनरल> दिनांक और समय पर जाएं और एक या अधिक दिन आगे की तारीख निर्धारित करें।
  4. डिवाइस को पूरी तरह से फिर से चालू करें और इसे वापस चालू करें।

IOS 9 के रूप में अद्यतन करें

बस एप को हटाने और रीइंस्टॉल करने से नोटिफिकेशन स्टेटस रीसेट हो जाएगा notDetermined(मतलब प्रॉम्प्ट दिखाई देगा)।

नीचे Gomfucius द्वारा उत्तर के लिए धन्यवाद: https://stackoverflow.com/a/33247900/704803


16
किसी ने इस w / iOS 5.1 की कोशिश की है? मैंने इन चरणों का ठीक से पालन किया है और मैं अभी भी इसे रीसेट करने के लिए डिवाइस प्राप्त नहीं कर सकता ... मैंने अपने मैक पर एक्सकोड के माध्यम से इसे स्थापित करने से पहले घड़ी को स्थापित करने की भी कोशिश की है।
nrj

1
Ditto ... मुझे एक संकेत नहीं मिला।
रोब

2
Apple ने AppStore सबमिशन दिशा-निर्देशों में एक नई आवश्यकता जोड़ी, जो शीघ्र दिखाने के लिए एप्लिकेशन पर निर्भर करता है। यह सुझाव दे सकता है कि iOS 5.1 में स्वचालित संकेत हटा दिया गया है। हालाँकि, अधिसूचना केंद्र सेटिंग्स को क्वेरी करने के लिए कोई API नहीं है, इसलिए सुनिश्चित नहीं है कि वैसे भी संकेत का उद्देश्य क्या होगा। इसी तरह के मुद्दे पर मेरी प्रतिक्रिया देखें: stackoverflow.com/questions/10191006/…
ग्रेग

10
यह मज़ाकीय है। क्या Apple को एहसास नहीं है कि डेवलपर्स या यहां तक ​​कि उपयोगकर्ता वास्तव में खराब वर्कअराउंड का उपयोग किए बिना इन चीजों को रीसेट करने में सक्षम होना चाहते हैं?
सूडो

2
जब मैं सिम्युलेटर में यह कोशिश करता हूं, तो मुझे त्रुटि कोड मिल रहा है = 3010 "सिम्युलेटर में दूरस्थ सूचनाएं समर्थित नहीं हैं"
थॉमस Zimmer

48

इसके समाधान के परीक्षण के लिए एक और बस अपनी बंडल आईडी को बदलना है। बस एक बार जब आप कर रहे हैं इसे वापस बदलने के लिए मत भूलना!


12
क्या आपको परीक्षण करने के लिए नई ऐप आईडी के लिए प्रमाणपत्र बनाने की आवश्यकता नहीं है?
टोनी

1
यह तभी काम करेगा जब वाइल्डकार्ड आधारित प्रोविजनिंग प्रोफाइल का उपयोग कर रहा हो - अन्यथा, आपको नए बंडल के लिए एक प्रोफ़ाइल बनाने की आवश्यकता होगी।
ज़ोरयार

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

यह सबसे तेज़ उपाय है! यह मेरे लिए बहुत अच्छा काम करता है! अपना बंडल बदलते समय आप "प्रोविजनिंग प्रोफाइल" के साथ ऐप पर हस्ताक्षर नहीं कर पाएंगे। लेकिन चिंता मत करो, xCode (मेरा संस्करण 7.1.1) में, आप "इसे ठीक करें" पर क्लिक कर सकते हैं और यह काम करता है। साथ ही, "क्षमताओं" को भी नहीं भूलना चाहिए, जहाँ आपके पास "ठीक करने" ("इसे ठीक करें" बटन पर क्लिक करके) और फिर यह बहुत अच्छी तरह से काम करेगा!
डैम फा

यह उत्तर एक कानूनी विकल्प है लेकिन फिर भी Apple की मूर्खतापूर्ण स्थिति के लिए एक हैक-फिक्स है। मैं बंडल को संशोधित नहीं कर रहा हूं, न ही डिवाइस घड़ी को स्विच कर रहा हूं। जैसा कि उचित हो, कोई भी डेवलपर UIAlertView दिखाते हुए कुछ शॉर्ट कोड लिख सकता है जो पूछता है कि "पुश नोटिफिकेशन की अनुमति दें?" .. हां = रजिस्टर विधि को कॉल करें; नहीं = call didFailToRegisterForRemoteNotificationsWithError (आदि) .. यह मेरा खुद का समाधान है, इस प्रश्नोत्तर को पढ़ने के बाद मेरा टेक-ऑफ। तकनीकी रूप से, यह उपयोगकर्ताओं को गोपनीयता जानकारी के बारे में जागरूकता प्रदान करने का सबसे अच्छा तरीका है ... क्यों धक्का सक्षम या वैकल्पिक होना चाहिए।
टॉम पेस

36

IOS 9.0.2 पर, मुझे हर बार ऐप को डिलीट करने और इसे फिर से इंस्टॉल करने के लिए "रजिस्टर पुश नोटिफिकेशन अलर्ट" मिल रहा है। यह AppStore उत्पादन डाउनलोड और एडहॉक मोड दोनों के लिए सही है।

अद्यतन: यह पुष्टि की है कि यह iOS 9.x के लिए काम कर रहा है


1
मैं iOS 9.x के लिए समान व्यवहार का अनुभव करता हूं। मैं आपको एक अद्यतन
येविन दुबीनिन

3
आखिरकार! कोई और अधिक हटाने वाला ऐप, डिवाइस को बंद करना, घड़ी को आगे के समय पर सेट करना और कुछ मूर्खतापूर्ण सामान।
मक्करमेस्किन

19

जैसा कि पहले ही नोट किया गया है कि किसी डिवाइस पर ऐप के लिए नोटिफिकेशन स्टेट को रीसेट करने का तरीका iOS5 के लिए नया है।

यह मेरे लिए iOS6 पर काम करता है:

  • डिवाइस से ऐप निकालें
  • डिवाइस को दो दिन या उससे अधिक आगे सेट करें
  • डिवाइस को पुनरारंभ करें
  • डिवाइस को दो दिन या उससे अधिक आगे सेट करें
  • डिवाइस को पुनरारंभ करें
  • ऐप को फिर से इंस्टॉल और रन करें

हालांकि यह केवल प्रारंभिक संकेत को फिर से प्रकट करेगा - यह किसी अन्य धक्का राज्य से संबंधित सामान को नहीं हटाएगा।


मेरे लिए भी ios7 पर काम किया है, आपको एक बार काम नहीं करने के लिए दो बार तारीख बदलनी होगी
नाथ

1
धन्यवाद! यह आईओएस 8 पर भी काम करता है (मुझे Twitter.app के लिए पुश अनुमतियों को रीसेट करना पड़ा, क्योंकि इसमें "ऐप आइकन बैज" सेटिंग में वरीयता वरीयता में नहीं था)।
गोलका

9

द प्लिस्ट: /प्रीयर / कंवर / मोबाइल / रूट्स / रिमोटेशन / क्लीमेंट.प्लास्ट

... पुश सूचनाओं के लिए पंजीकृत ग्राहक हैं। आपके ऐप की प्रविष्टि को हटाने से संकेत फिर से दिखाई देगा


11
बेकार जवाब अगर आप ऐप स्टोर के लिए विकसित करते हैं
samvermette

20
यदि यह जेलब्रेकर्स के लिए संभव है, तो डेवलपर्स के लिए गैर-जेलब्रेक फोन पर करना संभव है, है ना? और यह बेकार जवाब नहीं है, क्योंकि यह ऐसा कुछ नहीं है जिसे आप स्टोर में जमा करने के लिए किसी ऐप में डालेंगे। यह डेवलपर्स के लिए है कि किस तरह का परीक्षण किया जाए।
ऑस्कर

1
यह फ़ाइल iOS 5.x का हिस्सा नहीं है।
1:26 बजे gmogames

इस प्रश्न के भाग के रूप में एक अद्यतन उत्तर देखें: stackoverflow.com/questions/13021066/…
AriX

7

यह प्रोग्राम करना मेरे लिए हर समय काम करता है। मेरे पास निम्नलिखित लाइन के साथ एक बिल्ड है जो अनियंत्रित है:

 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

मैं इसे पीएन से अपंजीकृत करना चाहता हूं। आपको पुन: सूची से ऐप को स्पष्ट रूप से समाप्त करना होगा और इसे सही करने के लिए सेटिंग्स ऐप में अधिसूचना केंद्र के साथ खेलना होगा।

इसके अलावा, यूआई प्रॉम्प्ट उपयोगकर्ता को पीएन के लिए पंजीकरण करने के लिए कह सकता है। निश्चित नहीं है कि हाल के किसी भी iOS संस्करण में अक्षम किया गया है।


मेरे लिए iOS 10 / iPhone 6S काम किया। ध्यान दें कि मैंने अपंजीकृत किया, फिर पुनः इंस्टॉल करने से पहले हटाए गए एप्लिकेशन को हटा दिया।
गैब्रियल जेन्सेन

5

जैसा कि ianolito ने कहा, तिथि निर्धारित करने के लिए काम करना चाहिए:

आप डिवाइस को पूरी तरह से बंद करके, फिर डिवाइस को चालू करके एक दिन या उससे अधिक समय तक सिस्टम क्लॉक सेट करके वास्तव में एक दिन इंतजार किए बिना बाद को प्राप्त कर सकते हैं।

मैंने अपने डिवाइस (iPhone 4, iOS 6.1.2) पर ध्यान दिया कि सिस्टम क्लॉक को एक दिन पहले सेट करना या कुछ दिन भी मेरे लिए काम नहीं किया । इसलिए मैंने महीने की तारीख आगे बढ़ा दी और फिर इसने काम किया और मेरे आवेदन ने फिर से सूचनाओं को शीघ्र दिखाया।

आशा है कि यह किसी के लिए मदद करता है, यह सिर दर्द की तरह हो सकता है!


1
कृपया "नवीनतम ओएस" के साथ जवाब न दें - यह हर समय बदलता है। यह व्यवहार 6.1.2 में अभी भी टूटा हुआ प्रतीत होता है, लेकिन शायद यह 6.0.1 में काम करता है?
patr1ck

उत्तर को संपादित किया, अभी भी यह 6.1.2 में हाँ और 6.0.1 में पहले भी है। यह केवल मेरे लिए काम करता है अगर मैं कम से कम तारीख 1 महीने निर्धारित करता हूं।
विन्सेन्ट कोहेन

1
मैंने 24 घंटे की बात भी सुनी थी, इसलिए इसे आजमाया और यह 2 दिन उन्नत काम नहीं कर पाया। इसे अभी से 3 महीने के लिए सेट करें और अनुमति पॉपअप फिर से दिखाई दे! धन्यवाद!
मार्शिलिंग

पुरानी पोस्ट लेकिन यह देखकर खुशी हुई कि यह अभी भी मददगार है! सौभाग्य :)
विन्सेन्ट कोहेन

5

मैं micmdk से सहमत हूं .. मेरे पास पुश नोटिफिकेशन के साथ एक डेवलपमेंट एनवायरनमेंट सेटअप था और शुरुआती इंस्टॉल की तरह दिखने के लिए अपने फोन को रीसेट करने के लिए एक तरीके की आवश्यकता थी ... और केवल इन सटीक चरणों ने मेरे लिए काम किया ... डिवाइस के TWO रिबूट की आवश्यकता है:

APPLE TECH DOC ​​से:

पुश सूचनाओं को रीसेट करना अनुमतियाँ आईओएस पर अलर्ट पहली बार एक पुश-सक्षम ऐप पुश सूचनाओं के लिए रजिस्टर करता है, आईओएस उपयोगकर्ता से पूछता है कि क्या वे उस ऐप के लिए सूचनाएं प्राप्त करना चाहते हैं। एक बार जब उपयोगकर्ता ने इस अलर्ट पर प्रतिक्रिया दी है, तो इसे फिर से प्रस्तुत नहीं किया जाता है जब तक कि डिवाइस को बहाल नहीं किया जाता है या ऐप को कम से कम एक दिन के लिए अनइंस्टॉल किया गया है।

यदि आप अपने ऐप के पहली बार चलने का अनुकरण करना चाहते हैं, तो आप ऐप को एक दिन के लिए अनइंस्टॉल कर सकते हैं। आप इन चरणों का पालन करके वास्तव में एक दिन इंतजार किए बिना उत्तरार्द्ध को प्राप्त कर सकते हैं:

  1. डिवाइस से अपना ऐप हटाएं।

  2. डिवाइस को पूरी तरह से बंद करें और इसे वापस चालू करें।

  3. सेटिंग> जनरल> दिनांक और समय पर जाएं और एक या अधिक दिन आगे की तारीख निर्धारित करें।

  4. डिवाइस को पूरी तरह से फिर से चालू करें और इसे वापस चालू करें।


इसका उल्लेख अन्य उत्तर में काम नहीं करने के रूप में किया गया है।
ब्यू नोवेल

यह ठीक काम करता है। IOS 5.1 में काम करना बंद कर देना उस दूसरे जवाब का पुराना संस्करण था , जिसने ऐप को हटाने और घड़ी को आगे सेट करने के बीच रिबूट को छोड़ दिया।
dgatwood

3

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

UnregisterForRemoteNotifications को कॉल करने से नोटिफिकेशन सेटिंग्स से एप्लिकेशन को पूरी तरह से हटाया नहीं जाता है - हालांकि यह उस एप्लिकेशन के लिए सेटिंग्स की सामग्री को हटाता है। तो यह अभी भी संवाद को दूसरी बार उपयोगकर्ता को प्रस्तुत करने का कारण नहीं बनेगा जब अगली बार ऐप चलता है (कम से कम v3.1.3 पर नहीं जो मैं वर्तमान में परीक्षण कर रहा हूं)। लेकिन जैसा कि मैंने आपको ऊपर कहा है कि शायद आपको इस बारे में चिंता नहीं करनी चाहिए।


मैं एक बेहतर जवाब की उम्मीद कर रहा था, लेकिन मुझे लगता है कि बस एक नहीं है। फिर भी धन्यवाद!
हैंनो

3

स्वीकृत उत्तर ( TN2265 - समस्या निवारण पुश सूचनाएँ) के संदर्भ में संदर्भित वही तकनीकी नोट iOS 5 और उससे ऊपर के समाधान के साथ अद्यतन किया गया है।

संक्षेप में: एक बैकअप बनाएं और हर बार उससे पुनर्स्थापित करें।

IOS 5 और बाद में, डिवाइस को बैकअप (r। 11450187) से पुनर्स्थापित करके पुश नोटिफिकेशन अनुमतियाँ अलर्ट को रीसेट करें। यहाँ कुशलता से ऐसा करने के लिए कदम हैं:

  1. डिवाइस पर अपना ऐप इंस्टॉल करने के लिए Xcode ऑर्गनाइज़र का उपयोग करें। कुंजी को पहली बार चलाने के बिना ऐप को इंस्टॉल करना है।
  2. डिवाइस का बैकअप लेने के लिए iTunes का उपयोग करें।
  3. ऐप चलाएं। पुश सूचनाएँ अनुमतियाँ अलर्ट प्रस्तुत की जाएंगी।
  4. जब आप पुश नोटिफिकेशन अनुमतियाँ चेतावनी को रीसेट करना चाहते हैं, तो पहले चरण में आपके द्वारा बनाए गए बैकअप से डिवाइस को पुनर्स्थापित करें।

यह एक समय में सिफारिश की है कि हो सकता है, लेकिन यह अब नहीं करता है। वर्तमान सिफारिश ऐप को हटाने, रिबूट करने, घड़ी को आगे सेट करने, रिबूट करने, वैकल्पिक रूप से घड़ी को सही तिथि और समय पर सेट करने और ऐप चलाने के लिए है।
dgatwood

2

Apple Tech Note ने यह भी बताया कि आप पुश नोटिफिकेशन डायलॉग को रीसेट करने के लिए डिवाइस को रिस्टोर कर सकते हैं।

यह नहीं कहता है कि आप डिवाइस पर ही "सामान्य -> ​​रीसेट -> मिटा सभी सामग्री और सेटिंग्स" विकल्प का उपयोग कर सकते हैं (iOS 5.x)।


1
इसके लायक क्या है: मैंने बस 'सभी सेटिंग्स मिटा' की कोशिश की, और यह काम नहीं किया। सभी सामग्री-और-सभी-सेटिंग्स की कोशिश कर रहा है ...
Groxx

8
और "सभी सामग्री और सेटिंग्स" वास्तव में काम करती हैं, धन्यवाद! लेकिन पवित्र परमाणु विकल्प, बैटमैन! यह बिल्कुल पागलपन है।
ग्रोक्स

94
मैंने सुना है कि एक नया डिवाइस खरीदने पर भी पुश नोटिफिकेशन की चेतावनी साफ हो जाती है!
samvermette

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

1

Ianolito के जवाब के अलावा।

एक साल पहले मैंने एक ऐप डाउनलोड किया था और शुरू में पुश नोटिफिकेशन से इनकार किया था। अब पुश नोटिफिकेशन वापस चाहते हैं, इन चरणों ने मेरे लिए iOS 7 बीटा पर काम किया। निश्चित नहीं है कि किस बिंदु (बिंदुओं) ने इसे ठीक किया।

  • एप्लिकेशन को बंद करें और हटाएं।
  • अपनी iCloud सेटिंग्स पर जाएं और iCloud से ऐप हटाएं। अन्य सभी उपकरणों पर ऐसा करें जहां आपके पास सक्षम एप्लिकेशन के लिए iCloud बैकअप है। निष्क्रिय करने और हटाने के बाद एक नया बैकअप बनाएं। एप्लिकेशन को बैकअप के तहत किसी भी अधिक सूचीबद्ध नहीं किया जाना चाहिए। (यह शायद इसलिए है कि ianolito द्वारा वर्णित Apple के तकनीकी नोट ने iOS 5 में काम करना बंद कर दिया था, क्योंकि iCloud को iOS 5 में पेश किया गया था और कई में सक्षम ऐप के लिए iCloud बैकअप है।)
  • अपनी समय सेटिंग पर जाएं और समय को 1 महीने से अधिक समय पर सेट करें।
  • IPhone बंद करें (कोई रीसेट नहीं)।
  • एक मिनट रुकें, इसे फिर से स्विच करें और ऐप को फिर से डाउनलोड करें।
  • ऐप शुरू करें और मुझे फिर से संवाद प्रस्तुत किया गया।
  • एप्लिकेशन बैकअप को फिर से सक्षम करें, क्योंकि यह अभी भी निष्क्रिय है। समय को ठीक करें।

भगवान का शुक्र है कि मुझे "सभी सामग्री और सेटिंग्स को मिटाना" नहीं पड़ा। शायद यह किसी की मदद करेगा।


1

मैं हाल ही में प्रतिक्रिया-देशी अनुप्रयोग के साथ इसी तरह के मुद्दे पर भाग गया। iPhone OS संस्करण 13.1 था मैंने एप्लिकेशन को अनइंस्टॉल कर दिया और ऐप को इंस्टॉल करने का प्रयास किया और देखा कि दोनों स्थान और अधिसूचना अनुमतियाँ संकेतित नहीं थीं।

सेटिंग्स की जांच करने पर, मैं देख सकता था कि मेरा आवेदन स्थान के लिए सक्षम था (पिछली स्थापना से) हालांकि अधिसूचना के खिलाफ कोई समान प्रविष्टि नहीं थी समय की स्थापना के बिना स्थापना रद्द करने और रिबूट करने की कोशिश की, यह काम नहीं किया। Btw, मैंने भी Appstore ऐप डाउनलोड करने की कोशिश की, अभी भी वही व्यवहार है।

डिवाइस समय सेट करने के बाद ही समस्या हल हो गई थी।


0

घंटों की खोज के बाद, और ऊपर दिए गए सुझावों के साथ कोई भाग्य नहीं, यह 3.x + के लिए एक आकर्षण की तरह काम करता था

override func viewDidLoad() {
        super.viewDidLoad()


            requestAuthorization()

}

func requestAuthorization() {

        if #available(iOS 10.0, *) {

            UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
                print("Access granted: \(granted.description)")
            }

        } else {
            // Fallback on earlier versions
        }

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