2011-07-01 27 views
5

मैं अलार्म घड़ी प्रो और नाइटस्टैंड एप्लिकेशन के समान अलार्म घड़ी बनाने की कोशिश कर रहा हूं जो वर्तमान में ऐप स्टोर में हैं। अलार्म समय हिट होने पर आमतौर पर 30 सेकंड से अधिक समय तक अलार्म घड़ी ध्वनि चलाने में सक्षम होता है (आमतौर पर अगली सुबह)।अलार्म घड़ी प्रो ऐप जैसे 30 सेकंड से अधिक के लिए अलार्म ध्वनि कैसे चला सकता हूं?

मैं दो दृष्टिकोण पहले से ही कोई भाग्य के साथ की कोशिश की है:

दृष्टिकोण 1:

[self performSelector:@selector(playAlarm) withObject:nil afterDelay:myDouble]; 

दृष्टिकोण 2:

  UILocalNotification *notif = [[cls alloc] init]; 
    notif.fireDate =[datePicker date];//firedate; 
    notif.timeZone = [NSTimeZone systemTimeZone]; 

    notif.alertBody = @"Time to wake up!"; 
    NSString *SoundFileName=nil; 
    if([[[NSUserDefaults standardUserDefaults] objectForKey:@"ActualSoundFile"] isKindOfClass:[NSString class]]) 
     SoundFileName=[[[NSString alloc]initWithString:[[NSUserDefaults standardUserDefaults]objectForKey:@"ActualSoundFile"]]autorelease]; 
    else 
     SoundFileName=[[[NSString alloc] initWithString:@""] autorelease]; 

    if([SoundFileName length]>1) 
     notif.soundName = [SoundFileName stringByAppendingString:@".wav"]; 
    else 
     notif.soundName = UILocalNotificationDefaultSoundName; 

    [email protected]"Snooze"; 
    notif.repeatCalendar=[NSCalendar currentCalendar]; 
    notif.repeatInterval =NSDayCalendarUnit; 

    NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"Alarm" forKey:kRemindMeNotificationDataKey]; 

      notif.userInfo = userDict; 

    [[UIApplication sharedApplication] scheduleLocalNotification:notif]; 
    [notif release]; 

किसी को भी पता है कि वे किस तरह कर रहे हैं 7 घंटे के बाद एक लूप पर अलार्म खेलने में सक्षम?

+0

दृष्टिकोण 2 के लिए, क्या यह आपका पूरा कोड है? उस लाइन के बाद आपको निश्चित रूप से अधिक कोड चाहिए। –

+0

@ बेन - बस दो दृष्टिकोण जोड़े। – daSn0wie

उत्तर

1

आप fireDate संपत्ति में तारीख बताए द्वारा स्थानीय अधिसूचना आग, और

UILocalNotification *localNotif = [[[UILocalNotification alloc] init]autorelease]; 
localNotif.fireDate = scheduleDate; 
NSLog(@"fireDate is %@",localNotif.fireDate); 
localNotif.timeZone = [NSTimeZone defaultTimeZone]; 
localNotif.alertBody = @"WAKE UP...!!!"; 
localNotif.alertAction = @"View"; 
localNotif.soundName = @"Default.wav"; 


[[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 

में ध्वनि फ़ाइल आवंटित इस तरह की जरूरत है, स्थानीय अधिसूचना भले ही आवेदन बंद कर दिया है सक्रिय किए जाएंगे, याद रखें कि "Default.wav" फ़ाइल 30 सेकंड से कम या बराबर होनी चाहिए, यहां तक ​​कि अलार्म घड़ी प्रो ऐप भी स्थानीय अधिसूचना में ध्वनि = 30 सेकंड बजाता है।

तो आवेदन जीवित है, आप AppDelegate के प्रतिनिधि विधि लागू कर सकते हैं, और चेतावनी दृश्य प्रदर्शित और ध्वनि भी> 30 सेकंड खेलने के लिए अपने तर्क लागू कर सकते हैं .....

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{ 
} 
+0

आप एप्लिकेशन को 'जिंदा' कैसे रखते हैं? जब मैं अपना ऐप चलाता हूं और सो जाता हूं, तो ध्वनि केवल 30 सेकंड के लिए खेलती है। अलार्म घड़ी ऐप तब तक ध्वनि बजाता है जब तक कि मैं वास्तव में जागता हूं और उपयोगकर्ता की कार्रवाई करता हूं। – daSn0wie

-2

तो मुझे लगता है मैंने पाया एक वैध समाधान:

30 सेकंड से अधिक समय के लिए अलार्म ध्वनि को अनुकरण करने के लिए, बस 30 सेकंड अलग होने के बाद एक से अधिक स्थानीय नोटिफिकेशन जोड़ें।

+1

यह सही उत्तर नहीं है, क्योंकि उपयोगकर्ता पहली अधिसूचना के दौरान जाग सकता है और इसे बंद करना चुन सकता है। मान लीजिए, दूसरी अधिसूचना उपयोगकर्ता को यह इंप्रेशन देने के साथ आता है कि अलार्म टूट गया है। – MyCSharpCorner

+0

ऐप द्वारा इसे संभालने की आवश्यकता है।एक बार चेतावनी का चयन करने के बाद, आपको अन्य सभी स्थानीय नोटिफिकेशन – daSn0wie

+1

से रद्द करना होगा। यह सही समाधान नहीं है –

5

चयनित उत्तर सही उत्तर नहीं है, क्योंकि उपयोगकर्ता पहली अधिसूचना के दौरान जाग सकता है और इसे बंद करना चुन सकता है। मान लीजिए, दूसरी अधिसूचना उपयोगकर्ता को यह इंप्रेशन देने के साथ आता है कि अलार्म टूट गया है।

आप जबकि अपने अनुप्रयोग पृष्ठभूमि में है एक ध्वनि 30 सेकंड से अधिक है जब आपके सूचना आ नहीं खेल सकते हैं (जैसे उपयोगकर्ता सोने से पहले एप्लिकेशन बंद कर देता है:

सही अनुप्रयोग डॉक्स के अनुसार जवाब इस प्रकार है)।

एक लंबी आवाज खेलने के लिए, आपको अपने उपयोगकर्ता को सोने के जाने से पहले अलार्म ऐप को अग्रभूमि में छोड़ने के लिए अवश्य कहना चाहिए, फिर didReceiveLocalNotification में आप मैन्युअल रूप से लंबे ध्वनि को लागू करने के लिए लागू करते हैं।

+0

यह सही नहीं है। आप 30 सेकंड अंतराल पर लगातार क्रम में जितनी बार चाहें उतनी ही ध्वनि को लागू कर सकते हैं। ऐप लिखने वाले व्यक्ति को उपयोगकर्ता द्वारा संलग्न होने के बाद सेट की गई किसी भी लगातार अधिसूचना को साफ़ करने की आवश्यकता होती है। – daSn0wie

+0

जब आपका ऐप समाप्त हो जाता है या पृष्ठभूमि में निलंबित होने पर सिस्टम आपकी अधिसूचना प्रस्तुत करता है, तो दो विकल्प होते हैं: "बंद करें" और दूसरा बटन। बंद करें बटन को टैप करने से आपके ऐप को सूचित नहीं किया जाता है ताकि आप किसी भी लगातार अधिसूचनाओं को स्पष्ट न कर सकें। नतीजतन, उपयोगकर्ता आपके द्वारा निर्धारित 30 सेकंड अलार्म प्राप्त करेगा, भले ही वे हर बार बंद करें चुनें। मेरी राय में यह उपयोगकर्ता के लिए एक बहुत भ्रमित अनुभव है। – MyCSharpCorner

+0

आप उपयोगकर्ता को अपने ऐप पर वापस ला सकते हैं जिस बिंदु पर आप निष्पादित करते हैं: [[यूआईपीप्लिकेशन साझा अनुप्रयोग] रद्द करेंअलोकोकल नोटिफिकेशन]; – daSn0wie

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