2010-09-04 83 views
1

我用从苹果示例中的代码从这个页面:Link,但我似乎无法得到的声音重复。我检查了其他应用程序,例如Skype(VOIP)和Alarm Clock Pro(音频?),但无法重复播放声音文件。UILocalNotification重复声音

这是我的代码:

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    AlarmHandler *AHinstance = getAlarmHandlerInstance(); 
    UIApplication* app = [UIApplication sharedApplication]; 

    NSArray *alarmList   = [AHinstance getAlarms]; 
    NSArray *oldNotifications = [app scheduledLocalNotifications]; 

    if ([oldNotifications count] > 0) 
    { 
     [app cancelAllLocalNotifications]; 
    } 

    for (Alarm *theAlarm in alarmList) { 
     NSDate *alarmDate = [theAlarm getNearestActivationDate]; 
     Package *alarmPackage = [theAlarm getAlarmPackage]; 
     NSArray *fileList = [alarmPackage getVoiceFileListForBackgroundNotificationWithHour:theAlarm.larmHour]; 

     if(alarmDate == nil) continue; 

     UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease]; 

     if (alarm) 
     { 
      NSLog(@"File: %@", [fileList objectAtIndex:0]); 

      alarm.fireDate = alarmDate; 
      alarm.timeZone = [NSTimeZone defaultTimeZone]; 
      alarm.soundName = [fileList objectAtIndex:0];   
      alarm.alertBody = @"Time to wake up!"; 
      alarm.repeatInterval = 0; 

      [app scheduleLocalNotification:alarm]; 
     } 
    } 
} 

我如何能解决这个问题有什么建议?

我曾建议注册应用为音频播放器和播放声音的背景,但似乎苹果并欣然接受这些应用程序,因为它们不是真正的音频播放器。因此他们否认这些应用程序。

问候,
保罗Peelen

+0

伙计,你的应用程序现在完成...?实际上,我也面临同样的问题,即我的通知声音重复3次,因为我的声音是20秒。你可以帮我吗..?正如Itay说的那样,我发现它不可能, – mAc 2011-11-03 05:07:09

+0

。您必须在一个文件中添加3次相同的声音,或者设置3个通知。 – 2011-11-03 08:40:40

+0

@PaulPeelen你会得到任何解决方案? – Abha 2013-04-04 13:49:48

回答

4

没有办法为本地通知做到这一点。您既可以注册为VOIP应用程序,也可以注册为具有独立API的“背景音频”应用程序。但是,如果您未提供适当的功能以符合这些用途的资格,则很可能会被拒绝。

+0

我很害怕这可能是这样的。如果我想要一个系统声音重演自己......那可能吗? – 2010-09-14 07:58:49

+0

不适用于UILocalNotification - 我自己想要这个。您可以在应用程序的内部播放声音,并让它们重复播放,没有任何问题,但您必须在前台完成。 – Itay 2010-09-14 08:42:57

+0

好吧,你觉得应用程序“闹钟专业版”解决了这个问题吗?该应用程序一遍又一遍地重复标准的“短信声音”。你怀疑他们有一个“大”唤醒声音? – 2010-09-14 11:58:36

0

是的,这是可能的,因为文档状态:

自己的应用程序可以调度多达128个并发通知,其中任何一个可以被配置为在指定的时间间隔重复

你只需要配置repeatInterval属性:

重新安排通知的日历时间间隔。

+0

但是,这确实意味着3 - 4s的声音会让用户体验更加困难。正确?我知道这意味着一个新通知会在另一个通知中显示X秒,并且第一个通知将被自动删除。 – 2010-10-28 08:04:18