2011-02-11 10 views
17

पर काम नहीं कर रहा है मुझे UILocalNotification के साथ कुछ वास्तव में परेशान समस्याएं आ रही हैं।UILocalNotification सभी

एक ऐप पूरा करने के दौरान जो मैंने लगभग पूरा कर लिया है, मैंने देखा कि मुझे स्थानीय सूचनाएं काम पर नहीं मिल सका, चाहे मैंने कोशिश की हो।

तो समय बर्बाद करने के बजाय, मैंने मूल बातें वापस जाने का फैसला किया और देखा कि क्या मैं उन्हें बिल्कुल काम कर सकता हूं।

मैं एक नया XCode दृश्य आधारित अनुप्रयोग बनाया है, और इस के साथ -viewDidLoad लाए गए:

- (void)viewDidLoad 
{ 
    UILocalNotification * theNotification = [[UILocalNotification alloc] init]; 
    theNotification.alertBody = @"Alert text"; 
    theNotification.alertAction = @"Ok"; 
    theNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; 

    [[UIApplication sharedApplication] scheduleLocalNotification:theNotification]; 
} 

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

क्या मुझे यहां कुछ महत्वपूर्ण याद आ रहा है? या चल रहा है (मैं एप्पल प्रलेखन के माध्यम से खोज की है और यही कारण है कि इस हो रहा है के रूप में कुछ भी नहीं मिला)

धन्यवाद

उत्तर

43

UILocalNotification ही स्वचालित रूप से प्रदर्शित किए जाते हैं, तो एप्लिकेशन है नहीं चल (पृष्ठभूमि में)। यदि ऐप चल रहा है और एक स्थानीय अधिसूचना आग लगती है, UIApplicationDelegate की - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification विधि कॉल की जाती है और सिस्टम कुछ भी प्रदर्शित नहीं करता है (न ही यह ध्वनि चलाता है)। यदि आप अधिसूचना प्रदर्शित करना चाहते हैं, तो प्रतिनिधि प्रतिनिधि विधि में UIAlertView बनाएं।

+1

बिल्कुल सही। बहुत बहुत धन्यवाद। –

+0

मुझे लगता है कि इस व्यवहार को बदलने का कोई तरीका नहीं है? अधिसूचना केंद्र ऐप चल रहा है, जबकि एसिंक्रोनस संचार घटनाओं के लिए मेरे उपयोगकर्ता को जानकारी प्रदर्शित करने का एक शानदार तरीका है। – David

+0

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

15

मूर्खता में मेरे निजी रोमांच से सिर्फ एक टिप्पणी ...

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

+0

मैं इस "त्रुटि" को लंबे समय से शिकार कर रहा हूं! धन्यवाद! मैं कम से कम एक चेतावनी की अपेक्षा करता हूं, क्योंकि निश्चित रूप से एक खाली गैर-प्रदर्शित करने योग्य अधिसूचना निर्धारित करने की गलती है। – Gerard

+1

पुनर्स्थापित खुशी :) – Ramesh

+0

ओएमजी, @conarch, आपने मेरा दिन बचाया :) मैं उस तरह का एक लड़का भी हूं :) इसे इंगित करने के लिए धन्यवाद। –

13
  1. फायरडेट भविष्य का समय होना चाहिए।
  2. ऐप बैकड्रॉप में चलाना चाहिए, या बंद है।
  3. एक और बात, मत भूलना क्वेरी को दिखाने के लिए, धक्का अनुमति देते हैं AppDelegate लिए नीचे दिए गए कोड को जोड़ने के लिए है कि क्या:

    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
        if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) { 
         UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; 
         [application registerUserNotificationSettings:settings]; 
        } 
    } 
    
+0

कृपया अपने उत्तर में कोड को प्रारूपित करें – Anton

+2

[ऐप्पल दस्तावेज़ीकरण] में कोई भी नहीं है (https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/index.html # // apple_ref/doc/uid/TP40009565-CH1-SW13), क्या मैंने पढ़ा है कि मुझे पहले ऐप के लिए 'UserNotificationSettings' के लिए पंजीकरण करने की आवश्यकता है जिसमें केवल स्थानीय अधिसूचनाएं हों। इससे मुझे मदद मिली, जितनी सरल लगती है। –

संबंधित मुद्दे