दिलचस्प पोस्ट
जावा में चार में एट को परिवर्तित करें एक WP7 Silverlight अनुप्रयोग में नेविगेट करने के दौरान एक जटिल ऑब्जेक्ट को एक पेज पर पास करना सी में समस्या उपयोग मेमोरी प्रपत्र प्रमाणीकरण को समझने context.user.identity गतिशील रूप से निर्मित तत्वों के लिए मैं ट्विटर बूटस्ट्रैप टूलटिप्स कैसे बाँटूं? गिटग्नोर का उपयोग किए बिना आप गिट को कैसे अनदेखा कर सकते हैं? Android पर वाईफ़ाई आईपी पता पता? दृश्य या आंशिक दृश्यों से लेआउट शीर्ष पर सीएसएस या जावास्क्रिप्ट फाइलें जोड़ें एंड्रॉइड में कुछ सेकंड के लिए आपके पास कोड को कैसे रोकें? Web.config से कनेक्शन स्ट्रिंग पढ़ें कैसे JSON डेटा Deserialize करने के लिए? प्रमाणीकरण एक या अधिक संस्थाओं के लिए विफल रहा। अधिक विवरणों के लिए 'EntityValidationErrors' संपत्ति देखें जीआईटी रिपॉजिटरी में हटाई हुई फ़ाइल को ढूंढें और पुनर्स्थापित करें जहां तर्क जोड़ने के लिए एमवीसी (लायरवेल) सी और सी ++ में फ़ंक्शन के लिए एक बहुआयामी सरणी कैसे पारित करें

आईओएस 8 सक्षम डिवाइस कोड अपडेट के बाद पुश नोटिस प्राप्त नहीं कर रहा है

मैंने हाल ही में अपने एक परीक्षण आईफ़ोन्स को आईओएस 8 में अपग्रेड किया है और फिर नीचे पुश पंजीकरण कोड को उन्नत किया है (xcode 6 का उपयोग करके)

-(BOOL)hasNotificationsEnabled { NSString *iOSversion = [[UIDevice currentDevice] systemVersion]; NSString *prefix = [[iOSversion componentsSeparatedByString:@"."] firstObject]; float versionVal = [prefix floatValue]; if (versionVal >= 8) { NSLog(@"%@", [[UIApplication sharedApplication] currentUserNotificationSettings]); //The output of this log shows that the app is registered for PUSH so should receive them if ([[UIApplication sharedApplication] currentUserNotificationSettings].types != UIUserNotificationTypeNone) { return YES; } } else { UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; if (types != UIRemoteNotificationTypeNone){ return YES; } } return NO; } -(void)registerForPUSHNotifications { NSString *iOSversion = [[UIDevice currentDevice] systemVersion]; NSString *prefix = [[iOSversion componentsSeparatedByString:@"."] firstObject]; float versionVal = [prefix floatValue]; if (versionVal >= 8) { //for iOS8 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; } } 

इस अपग्रेड के बावजूद और यह तथ्य कि [[UIApplication साझा किए गए आवेदन] currentUserNotificationSettings] दिखाता है कि डिवाइस के लिए पुश सक्षम है, मुझे पुश नोटिफिकेशन नहीं मिल रहा है

मैं पर्स का उपयोग कर रहा हूं और पुस्तक से सब कुछ कर रहा हूं जहां तक ​​वे चिंतित हैं ( https://parse.com/tutorials/ios-push-notifications )।

क्या कोई एक ही समस्या का सामना कर रहा है? क्या कुछ और है जो मुझे याद आ रहा है?

Solutions Collecting From Web of "आईओएस 8 सक्षम डिवाइस कोड अपडेट के बाद पुश नोटिस प्राप्त नहीं कर रहा है"

पुश नोटिफिकेशन के लिए पंजीकरण करने का तरीका आईओएस 8 में बदल दिया गया है: आईओएस 9 तक सभी संस्करणों के लिए कोड नीचे दिया गया है:

 if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; } else { [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; } 

यदि आप यह जांचना चाहते हैं कि पुश सूचनाओं को सक्षम किया गया है या नीचे कोड का उपयोग नहीं किया गया है:

 - (BOOL) pushNotificationOnOrOff { if ([UIApplication instancesRespondToSelector:@selector(isRegisteredForRemoteNotifications)]) { return ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]); } else { UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; return (types & UIRemoteNotificationTypeAlert); } } #ifdef __IPHONE_8_0 - (void)application:(UIApplication *)application didRegisterUserNotificationSettings: (UIUserNotificationSettings *)notificationSettings { //register to receive notifications [application registerForRemoteNotifications]; } - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler { //handle the actions if ([identifier isEqualToString:@"declineAction"]){ } else if ([identifier isEqualToString:@"answerAction"]){ } } #endif 

ऊपर कोड केवल Xcode 6+ पर चलाएगा …

अपनी फ़ाइल के शीर्ष पर इस रेखा को जोड़ें

  #define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 

1) IOS8 में पुश अधिसूचना के लिए पंजीकरण करते समय आपको हालत में IOS8 । इस कोड को did finish launch आवेदन में जोड़ें।

 if(IS_IOS_8_OR_LATER) { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: (UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert) categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; } else { //register to receive notifications UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes]; } 

2) फिर IOS8 लिए इस विधियां जोड़ें

 #ifdef __IPHONE_8_0 - (void)application:(UIApplication *)application didRegisterUserNotificationSettings: (UIUserNotificationSettings *)notificationSettings { //register to receive notifications [application registerForRemoteNotifications]; } - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler { //handle the actions if ([identifier isEqualToString:@"declineAction"]){ } else if ([identifier isEqualToString:@"answerAction"]){ } } #endif 

तब आपको अधिसूचना प्रतिनिधि विधि कहा जाएगा। आशा है कि यह आपकी मदद करेगा !!!

रनटाइम और पुराने कंपाइलर सुरक्षित विकल्प … यदि आप पुराने xcode (5.0 या पहले) में चलाते हैं

  // changes of API in iOS 8.0 - (void) registerForPushNotification { NSLog(@"registerForPushNotification"); if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0 //__IPHONE_8_0 is not defined in old xcode (==0). Then use 80000 NSLog(@"registerForPushNotification: For iOS >= 8.0"); [[UIApplication sharedApplication] registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes: (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; #endif } else { NSLog(@"registerForPushNotification: For iOS < 8.0"); [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; } } 
 if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { // For iOS 8 [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { // For iOS < 8 [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; } 

इसके बाद:

  1. उन ऐप्स को हटाएं जिनके पास पुश नोटिफिकेशन नहीं है, डिवाइस के किसी भी रूप में।
  2. उपकरण पूरी तरह से बंद करें और इसे वापस चालू करें
  3. सेटिंग्स पर जाएं और एक दिन आगे की तारीख और समय सेट करें
  4. डिवाइस को फिर से चालू करें और उसे वापस चालू करें
  5. एप्लिकेशन को फिर से इंस्टॉल करें और यह पहली बार अधिसूचना की मांग करेगा जैसे आपने इसे स्थापित किया था।
  6. अपनी तिथि / समय फिर से रीसेट करें अगर स्वचालित रूप से सेट नहीं होता है

यह अधिसूचना सेटिंग्स को रीसेट करेगा। फिर एप्लिकेशन इंस्टॉल करें और सभी ठीक काम करेंगे 🙂

अगर आपके पास आईओएस 8 और पुराने संस्करण हैं, तो यह कोशिश करें:

 if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { // For iOS 8 [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else { // For iOS < 8 [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; } 

ऐप्पल के विकास स्थल से:

UIUserNotificationSettings

UIUserNotificationSettings ऑब्जेक्ट आपके ऐप द्वारा उपयोगकर्ता के लिए प्रदर्शित किए जा सकने वाले सूचनाओं के प्रकारों को सामने लाती है। ऐसे ऐप्स जो स्थानीय या पुश अधिसूचना के साथ दृश्यमान या श्रव्य अलर्ट का उपयोग करते हैं, उन्हें उनके द्वारा उपयोग किए जाने वाले अलर्ट के प्रकार को पंजीकृत करना होगा। यूआईकेट आपके द्वारा उपयोगकर्ता की वरीयताओं के साथ प्रदान की जाने वाली जानकारी को निर्धारित करने के लिए आपके एप को किस प्रकार के अलर्ट को काम करने की अनुमति है

अपने प्रारंभिक पंजीकरण अनुरोध को पूरा करने और अनुरोध परिणामों को देखने के लिए इस वर्ग का उपयोग करें। इस क्लास का एक उदाहरण बनाने और अपनी पसंदीदा सेटिंग को निर्दिष्ट करने के बाद, उन सेटिंग्स को रजिस्टर करने के लिए UIApplication वर्ग के registerUserNotificationSettings: विधि को कॉल करें। उपयोगकर्ता वरीयताओं के विरुद्ध आपके अनुरोध की जांच करने के बाद, एप परिणाम के लिए application:didRegisterUserNotificationSettings: को बचाता है application:didRegisterUserNotificationSettings: इसके ऐप प्रतिनिधि का तरीका। उस पद्धति को दिया गया ऑब्जेक्ट आपके ऐप को उपयोग करने की अनुमति देने वाली सूचनाओं के प्रकार को निर्दिष्ट करता है

अपने ऐप के अलर्ट प्रकारों को दर्ज करने के अतिरिक्त, आप स्थानीय या पुश नोटिफिकेशन के साथ संयोजन के रूप में प्रदर्शित करने के लिए कस्टम वर्जन के समूह को पंजीकृत करने के लिए इस वर्ग का उपयोग भी कर सकते हैं। कस्टम क्रिया तात्कालिक कार्य का प्रतिनिधित्व करती है, जो आपका ऐप अधिसूचना के जवाब में कर सकती है। आप कार्रवाइयों के समूह को परिभाषित करते हैं और एक संपूर्ण सूचना के साथ पूरे समूह को संबद्ध करते हैं। संबंधित अलर्ट प्रदर्शित होने पर, सिस्टम आपके द्वारा निर्दिष्ट प्रत्येक कार्रवाई के लिए बटन जोड़ता है जब उपयोगकर्ता किसी एक कार्य के लिए बटन को टैप करता है, तो सिस्टम आपके ऐप को जगाता है और एप्लिकेशन को कॉल करता application:handleActionWithIdentifier:forRemoteNotification:completionHandler: या application:handleActionWithIdentifier:forLocalNotification:completionHandler: अपने ऐप प्रतिनिधि का तरीका अनुरोधित क्रिया करने के लिए उन विधियों का उपयोग करें

यह बहुत सरल है:

निम्नलिखित लाइन को xcode6 में अपनी परियोजना के xcode6

  [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; 
 The code below resolved: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { UIUserNotificationType types; types = [[UIApplication sharedApplication] currentUserNotificationSettings].types; if (types & UIUserNotificationTypeAlert) pushEnabled=YES; else pushEnabled=NO; } else { UIRemoteNotificationType types; types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; if (types & UIRemoteNotificationTypeAlert) pushEnabled=YES; else pushEnabled=NO; } 

मैंने सेटिंग्स ऑब्जेक्ट की प्रकार की जानकारी प्राप्त करने की कोशिश की और पाया कि प्रकार की संपत्ति मूल रूप से एक बिटमैस्क है यहां बताया गया है कि आप सूचनाओं को कैसे निकाल सकते हैं।

मेरा उदाहरण स्विफ्ट और> = 8.0 आईओएस 8.0 में है।

  let settings = UIApplication.sharedApplication().currentUserNotificationSettings() if settings.types.rawValue & UIUserNotificationType.Alert.rawValue == UIUserNotificationType.Alert.rawValue { // can receive alert! } else { // if the user is not even able to receive alerts, show him a hint on how to reenable notifications in system settings } if settings.types.rawValue & UIUserNotificationType.Badge.rawValue == UIUserNotificationType.Badge.rawValue { // can receive badge! } if settings.types.rawValue & UIUserNotificationType.Sound.rawValue == UIUserNotificationType.Sound.rawValue { // can receive sound! }