【问题标题】:Local Notification sound not playing?本地通知声音没有播放?
【发布时间】:2014-03-17 03:16:26
【问题描述】:

我在本地通知方面遇到了这个问题,它们没有播放声音。我用默认的和自定义的进行了测试,这显然是我想玩但没有的!我看了很多人都面临这个问题,但他们的解决方案都不适合我。

UILocalNotification *local

- (IBAction)Dateaction:(id)sender {

    local = [[UILocalNotification alloc]init];
    local.timeZone = [NSTimeZone defaultTimeZone];
    local.alertBody = [NSString stringWithFormat:@"%@ Recuerda que tienes que: %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"user"], [[NSUserDefaults standardUserDefaults] objectForKey:@"selected"]];
    local.fireDate = [self.DatePicker date];
   /* if ([[self.userdefaults objectForKey:@"sound"]isEqualToString:@"sound1"]) {
        local.soundName = @"sound1.caf";
    }else if([[self.userdefaults objectForKey:@"sound"]isEqualToString:@"sound2"]){
        local.soundName = @"sound2.caf";
    }else if([[self.userdefaults objectForKey:@"sound"]isEqualToString:@"sound1"]){
        local.soundName = @"sound3.caf";
    }else{
        local.soundName = @"sound1.caf";
    }*/
    local.soundName = UILocalNotificationDefaultSoundName;


}

- (IBAction)switchChanged:(id)sender {
if(self.NotSwith.isOn == YES){
        [[UIApplication sharedApplication] scheduleLocalNotification:local];


       }
}

【问题讨论】:

  • 您忘记了第一行代码中的;。应该是 UILocalNotification *local; 而不是 UILocalNotification *local
  • 对不起,我发帖的时候说的,显然在我的项目中它很好,否则它甚至不会运行,问题是当通知显示在设备中时没有声音。
  • 您的应用在发送通知时处于什么状态?请记住,如果应用程序不在最前面且不可见,则系统会显示警报消息,标记应用程序,并播放通知中指定的声音。如果系统传递通知时应用程序处于最前面且可见,则不会显示警报,不会标记图标,也不会播放声音。
  • 在激活开关时安排通知,处于活动状态...

标签: ios objective-c audio uilocalnotification


【解决方案1】:

可能是一个相对简单的解决方案:你能测试它是否在模拟器中工作吗?如果它在模拟器中而不是在设备中工作,我建议确保静音开关没有打开(昨天花了 4 个小时解决这个问题)。

【讨论】:

  • 嗯,不,它也不能在模拟器中工作,在设备中我得到两次静音已经关闭......我对此感到疯狂!哈哈
【解决方案2】:

嗯, 有趣的是,我改变了顺序

notification.SoundName = UILocalNotification.DefaultSoundName;
notification.ApplicationIconBadgeNumber = 1;

notification.ApplicationIconBadgeNumber = 1;
notification.SoundName = UILocalNotification.DefaultSoundName;

现在可以使用了。当应用在后台运行时,会触发本地通知并播放默认通知声音。

【讨论】:

    【解决方案3】:

    确保您正在清理旧通知

    UIApplication* app = [UIApplication sharedApplication];
    NSArray*  oldNotifications = [app scheduledLocalNotifications];
    

    // 在安排新通知之前清除旧通知。

    [app cancelAllLocalNotifications];
    

    如果您不想取消所有通知,请尝试更改徽章编号和声音名称的顺序。

    希望这能解决您的问题。

    【讨论】:

      【解决方案4】:

      在我的情况下,模拟器工作正常。 iPad将播放音乐等。 问题是: 在 iPad 上的音量控制旁边,铃声开关处于关闭状态。 这阻止了警报声音通过。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-31
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 1970-01-01
        相关资源
        最近更新 更多