2016-12-24 12 views
5

यह प्रश्न आईओएस 10 एपीएनएस परिवर्तनों के लिए विशिष्ट है।कैसे जांचें कि उपयोगकर्ता ने सेटिंग्स से पुश अधिसूचना सक्षम की है या नहीं?

यह मेरा एप्लिकेशन के प्रवाह है:

  1. अनुप्रयोग स्थापित
  2. अनुप्रयोग ➝ लॉग इन स्क्रीन शुरू होता है
  3. सफल लॉग इन ➝ होम स्क्रीन
  4. पुश अधिसूचना ➝ अनुरोध
  5. पुश अधिसूचना ➝ डॉन
  6. ऐप बंद करें
  7. सेटिंग्स ➝ उपयोगकर्ता सक्षम पुश अधिसूचना
  8. ऐप ओपन
  9. सेटिंग्स को अपडेट करने के तरीके को कैसे जांचें?
  10. अनुप्रयोग बंद
  11. सेटिंग ➝ उपयोगकर्ता विकलांग पुश अधिसूचना
  12. एप्लिकेशन खोलें
  13. यदि सेटिंग को अपडेट कैसे जांच करने के लिए?

मैं केवल उपयोगकर्ता द्वारा लॉग इन करते समय पुश अधिसूचना (चरण 4) के लिए अनुरोध कर रहा हूं। इसलिए जब तक कोई उपयोगकर्ता लॉग आउट नहीं करता है, तो मैं पुश के लिए पुनः अनुरोध नहीं कर पाऊंगा।

क्या इसमें कोई साफ और स्पष्ट समाधान है ताकि हम आईओएस 8 या 9 का समर्थन करते हुए आईओएस 10 परिवर्तनों का समर्थन कर सकें?

+0

आप इस – Dory

उत्तर

0

जब भी आपका ऐप अग्रभूमि में प्रवेश करता है तो आप currentUserNotificationSettings का उपयोग कर सकते हैं।

UIUserNotificationSettings *grantedSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; 
    if (grantedSettings.types == UIUserNotificationTypeNone) { 
      NSLog(@"No permiossion granted"); 
     } 
     else if (grantedSettings.types & UIUserNotificationTypeSound & UIUserNotificationTypeAlert){ 
      NSLog(@"Sound and alert permissions "); 
     } 
     else if (grantedSettings.types & UIUserNotificationTypeAlert){ 
      NSLog(@"Alert Permission Granted"); 
     } 

आप अगर स्थिति पिछले एक से बदल गया है की जांच करना चाहते हैं, तो आप कुछ चर को currentUserNotificationSettings के पिछले मूल्य रखने के लिए और applicationWillEnterForeground विधि में वर्तमान मूल्य अतिरिक्त समय के साथ तुलना कर सकते हैं।

+0

यह स्थानीय सूचनाओं के लिए एक कोड हो रहा है के लिए किसी भी समाधान नहीं मिला था , क्या यह दूरस्थ अधिसूचनाओं के लिए काम करेगा? – Hemang

+0

नहीं, CurrentUserNotificationSettings दोनों के लिए काम करता है। - दूरस्थ अधिसूचनाओं के लिए काम करेगा – Darshana

6

उपयोग इस code-

if ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]) { 
// yes 
}else{ 
// no 
} 
3

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

  1. आयात अपनी कक्षा

    @import UserNotifications; 
    
  2. क्वेरी में ढांचे सेटिंग्स

    - (void)_queryNotificationsStatus 
    { 
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
        [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings *settings){ 
    
        //1. Query the authorization status of the UNNotificationSettings object 
        switch (settings.authorizationStatus) { 
        case UNAuthorizationStatusAuthorized: 
         NSLog(@"Status Authorized"); 
         break; 
        case UNAuthorizationStatusDenied: 
         NSLog(@"Status Denied"); 
         break; 
        case UNAuthorizationStatusNotDetermined: 
         NSLog(@"Undetermined"); 
         break; 
        default: 
         break; 
        } 
    
    
        //2. To learn the status of specific settings, query them directly 
        NSLog(@"Checking Badge settings"); 
        if (settings.badgeSetting == UNAuthorizationStatusAuthorized) 
        NSLog(@"Yeah. We can badge this puppy!"); 
        else 
        NSLog(@"Not authorized"); 
    
        }]; 
    } 
    
संबंधित मुद्दे