14

मुझे हमेशा पता है कि उपयोगकर्ता पुश अधिसूचना सेटिंग्स पर कौन से विकल्प चुनते हैं।
(विकल्प हैं - चेतावनी, ध्वनि और बैज)उद्देश्य सी - पता लगाएं कि जब उपयोगकर्ता ऐप की अधिसूचना सेटिंग्स बदलता है

तो जब मेरी एप्लिकेशन लॉन्च मैं फोन:

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 

और पता लगाने क्या उपयोगकर्ता चुना है।

लेकिन अगर मैं ऐप जीवनकाल के दौरान बाद में सेटिंग बदलता हूं तो मैं कैसे पता लगा सकता हूं?
क्या कोई प्रतिनिधि तरीका है जिसे इस सेटिंग के साथ कोई परिवर्तन होने पर बुलाया जाता है?

उत्तर

22

कोई प्रतिनिधि नहीं है। आपको UIApplication संपत्ति enabledRemoteNotificationTypes समय-समय पर क्वेरी करने की आवश्यकता है, उदाहरण के लिए applicationDidBecomeActive: में।

जानकारी के लिए इन उत्तरों की जांच:

Determine on iPhone if user has enabled push notifications

View In Lock Screen and enabledRemoteNotificationTypes - iOS5

संपादित करें:
आप पुश अधिसूचना स्थापित करने और अनुमति चेतावनी पुनर्स्थापित करने के लिए की जरूरत है, Apple technical note TN2265 पर एक नजर है । अनुभाग "आईओएस पर पुश अधिसूचना अनुमति अलर्ट रीसेट करना" वे आईओएस पर सेटिंग को रीसेट करने का तरीका बताते हैं। हालांकि, कई डेवलपर्स शिकायत करते हैं कि प्रक्रिया काम नहीं करती है। सुनिश्चित नहीं है कि this link काम करेगा, तो आपको ऐप्पल फ़ोरम तक पहुंच की आवश्यकता होगी, लेकिन यह इस सटीक मुद्दे के बारे में धागे में से एक है।

मैं खुद सोच रहा था कि क्या ऐप्पल ने आईओएस 5.1 में अनुमति संवाद हटा दिया है। अन्यथा उन्हें चेतावनी दिखाने के लिए आवेदन की आवश्यकता क्यों होगी? चुनने के लिए आप उपयोगकर्ता

5.3 एप्लिकेशन जो पहले प्राप्त करने के उपयोगकर्ता सहमति

उदाहरण पथ (आवेदन) के लिए अस्वीकार कर दिया जाएगा बिना पुश सूचनाएं भेजने पूछता पुश अधिसूचना के लिए गाना-अप के बीच में: AppStore review guidelines के अनुसार प्रक्रिया, जब एप्लिकेशन पहली बार शुरू होता है।

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

+0

धन्यवाद :) यू पता है कि मैं "इस एप्लिकेशन के लिए धक्का अनुमति देते हैं" पॉप बॉक्स है कि उपयोगकर्ता पहली बार उन्होंने एप्लिकेशन लॉन्च पर मिल पाने के लिए क्या करना चाहिए? मुझे विभिन्न परिदृश्यों को डीबग करने के लिए इसकी आवश्यकता है, मैंने ऐप को हटाने और पुनः इंस्टॉल करने की कोशिश की लेकिन पॉप बॉक्स नहीं मिला ... – Eyal

+0

मैंने कुछ लिंक शामिल करने के लिए उत्तर संपादित किया जो शायद उपयोगी हो। हालांकि कई डेवलपर्स शिकायत करते हैं कि ऐप्पल द्वारा उल्लिखित प्रक्रिया काम नहीं करती है। मैंने अपने आवेदन को विकसित करते समय अनुमति संवाद कभी नहीं देखा है, इसलिए मुझे यह भी पता नहीं था कि यह अन्य डेवलपर्स से कुछ पोस्ट पढ़ने तक अस्तित्व में था। – Amiramix

+0

अंतिम भाग सत्य नहीं है, कम से कम आईओएस 7 पर, enableRemoteNotificationTypes केवल आपके ऐप के लिए है और यदि उपयोगकर्ता किसी को भी अधिसूचनाएं सेट नहीं करता है तो आप एपीएन टोकन प्राप्त नहीं करेंगे। – jcesarmobile

6

इसे लॉन्च करने के बजाए आपका ऐप सक्रिय होने पर जांचें।

0

यह एक उदाहरण है जब पुश को शहरी एरीशिप के माध्यम से लागू किया जाता है। प्रत्येक बार जब उपयोगकर्ता प्रतिनिधि आग के बाद पुश के लिए ऑप्ट-इन/ऑप्ट-आउट करता है और इसके नीचे विधि के साथ आप (हाँ/नहीं) की जांच कर सकते हैं।

यदि शहरीएयरशिप का उपयोग नहीं किया जाता है तो यूआईपीप्लिकेशन प्रतिनिधि के साथ भी हासिल किया जा सकता है।

- (void)registrationSucceededForChannelID:(NSString)channelID deviceToken:(NSString)deviceToken 
    { 
     NSLog(@"registrationSucceededForChannelID : %@",[self appRegisterForPushNotification][email protected]"YES":@"NO"); 
    } 


    - (BOOL)appRegisterForPushNotification { 
     if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) { 
      UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types]; 
      return ((types & UIUserNotificationTypeAlert) || (types & UIUserNotificationTypeSound)); 
     } 
     return NO; 
    } 
संबंधित मुद्दे