2013-05-28 84 views

回答

1

沒有本地通知到期的概念。你告訴他們開火,並由用戶來解僱或與他們互動。

關於使聲音持續20秒(除了事實上我會刪除這個應用程序,如果它堅持播放20通知聲音!),讓我們說,例如,你當前的聲音持續5秒,你可以複製粘貼在一個文件中發聲4次,然後播放。我認爲最大聲音長度爲30秒,但我無法找到支持這一點的文檔。

+0

他實際上可能使一個短的蜂鳴聲與無聲19secs如果這是真的,該通知停留在屏幕只要聲音正在播放... –

+0

問題是,這不是真正的Engin。它一直保持在屏幕上,直到用戶與其交互爲止,這可能是永遠的。 –

0

您可以通過在每20秒後更改notify.firedate來設置持續時間。

維持每20秒 - 您可以使用定時器

1

對不起,我的英語不好。 您只能使用NSCalendarUnit值重複本地通知。或重置他(通知),並設置新的舊通知在方法(應用程序:didReceiveLocalNotification :)工作。爲此,您可以將自己的字典添加到通知對象userInfo值,並在稍後在此方法中收到通知時處理它。但是,當應用程序未運行時,此方法無法在後臺模式下運行,或者未點擊通知警報運行。希望這可以幫助。

0

如果它是關於重複的通知聲音,那麼你可以這樣做:

UILocalNotification* notifyAlarm =[[UILocalNotification alloc] 
             init]; 
    if (notifyAlarm) 
    { 
     notifyAlarm.timeZone = [NSTimeZone defaultTimeZone]; 
     notifyAlarm.fireDate = nil; 
     [email protected]"phone.wav"; 
     notifyAlarm.alertBody [email protected]"value"; 
     [email protected]"value"; 
     notifyAlarm.hasAction=YES; 
     [[UIApplication sharedApplication] presentLocalNotificationNow:notifyAlarm]; 
     [notifyAlarm release]; 

     UIApplicationState state = [[UIApplication sharedApplication] applicationState]; 
     if (state == UIApplicationStateInactive || state==UIApplicationStateBackground) { 
      [self backgroundHandlerToPlayCallTone]; 
     } 
    } 

-(void)backgroundHandlerToPlayCallTone { 
UIApplication* app = [UIApplication sharedApplication]; 
bgTaskToPlayCallTone = [app beginBackgroundTaskWithExpirationHandler:^{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [app endBackgroundTask:self->bgTaskToPlayCallTone]; 
     self->bgTaskToPlayCallTone = UIBackgroundTaskInvalid; 
    }); 
}]; 

// Start the long-running task 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{ 
//dispatch_async(dispatch_get_main_queue(), ^{ 
    [self startCallTone]; 
    [app endBackgroundTask:self->bgTaskToPlayCallTone]; 
    self->bgTaskToPlayCallTone= UIBackgroundTaskInvalid; 
}); 
} 

-(void) startCallTone { 
if(audioPlayer !=nil) { 
    [audioPlayer pause]; 
    [audioPlayer release]; 
    audioPlayer=nil; 
} 
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"phone" ofType:@"wav"]]; 
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 
[audioPlayer setDelegate:self]; 
audioPlayer.numberOfLoops=10; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; 
//[[AVAudioSession sharedInstance] setActive:YES withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation error:nil]; 
UInt32 allowMixing = true; 
AudioSessionSetProperty (kAudioSessionProperty_OtherMixableAudioShouldDuck, sizeof(allowMixing),&allowMixing); 

[[AVAudioSession sharedInstance] setActive: YES error: nil]; 
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
[audioPlayer play]; 
} 
相關問題