多任务应用程序只能将后台服务用于其预期目的:

时间:2014-12-17 20:32:17

标签: ios

原因

2.16:多任务应用程序只能将后台服务用于其预期目的:VoIP,音频播放,位置,任务完成,本地通知等。 ----- 2.16 -----

我们发现您的应用使用后台模式,但不包含要求该模式持续运行的功能。此行为不符合App Store审核指南。

我们注意到您的应用在Info.plist中的UIBackgroundModes键中声明了对音频的支持,但是当应用程序在后台时,不会播放可听内容。虽然您的意图可能是提供此功能,但在审核时,我们无法为您的应用播放背景音频。

如“iOS应用程序编程指南”中所示:

“此密钥适用于在后台为用户提供可听内容的应用程序,例如音乐播放器或流式音频应用程序。”

因此,在应用程序处于后台时向用户提供可听内容或从UIBackgroundModes键中删除“audio”设置是合适的。

如果您在复制报告的问题时遇到困难,请尝试测试技术Q& A QA1764:如何重现针对App Store提交的错误报告中描述的工作流程。

如果您在使用上述资源后遇到代码级问题,则可以咨询Apple Developer Technical Support。当DTS工程师跟进您时,请准备好提供:

  • 拒绝问题的完整详情
  • 截图
  • 重现问题的步骤
  • 符号化崩溃日志 - 如果您的问题导致崩溃日志

这是我的代码

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

       bgTask = [app beginBackgroundTaskWithExpirationHandler:^{

        }];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            musTimer = [NSTimer scheduledTimerWithTimeInterval:10
                                                        target:self
                                                      selector:@selector(playmus)
                                                      userInfo:nil
                                                       repeats:YES];

            //run function methodRunAfterBackground
            t = [NSTimer scheduledTimerWithTimeInterval:delay
                                                 target:self
                                               selector:@selector(sendLocalNotification)
                                               userInfo:nil
                                                repeats:YES];
            [[NSRunLoop currentRunLoop] addTimer:t forMode:NSDefaultRunLoopMode];
            [[NSRunLoop currentRunLoop] addTimer:musTimer forMode:NSDefaultRunLoopMode];

            [[NSRunLoop currentRunLoop] run];
        });


    }
}
-(void)playmus
{
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mute" ofType:@"mp3"]];
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

    [audioPlayer play];



    newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];

    if (newTaskId != UIBackgroundTaskInvalid && bgTask != UIBackgroundTaskInvalid)
        [[UIApplication sharedApplication] endBackgroundTask: bgTask];

    bgTask = newTaskId;

}

0 个答案:

没有答案