2

アプリのロック画面/再生中のコントロールを使用しようとしていますが、イベントを受信して​​いません。ドキュメントはそれをかなり簡単に見えるようにしているので、結果が得られなかったときに少し驚いた。私のアプリは、デバイスでオーディオを再生する以外の目的でリモートコントロールイベントを受信する必要があります。NSLogで確認を印刷するだけで、これをテストしようとしました。ドキュメントに記載されていないオーディオまたはメディアフレームワークを使用する必要がありますか?警告やエラーが表示されないので、問題はないと思います...リモートコントロールイベントが登録されない理由に関する洞察をいただければ幸いです。

関連するコードは次のとおりです。

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    //Register for lock screen controls
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];

    //Unregister lock screen controls
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self resignFirstResponder];
}

- (BOOL)canBecomeFirstResponder{
    return YES;
}

//Lock screen controls
- (void)remoteControlReceivedWithEvent:(UIEvent *)event{
    NSLog(@"RECEIVED");
    if (event.type == UIEventTypeRemoteControl) {

        switch (event.subtype) {

            case UIEventSubtypeRemoteControlTogglePlayPause:
                NSLog(@"RECEIVED");
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                NSLog(@"RECEIVED");
                break;

            case UIEventSubtypeRemoteControlNextTrack:
                NSLog(@"RECEIVED");
                break;

            default:
                break;
        }
    }
}
4

2 に答える 2

3

Jojasが述べたことに加えて、アクティブなオーディオセッションがあることを確認する必要があります。[AVAudioSession setActive:withFlags:error:]を見てください。

于 2012-06-03T21:50:14.703 に答える
1

セットアップするすべての状態のアプリケーションが正常であることをすでに確認しましたReceivingRemoteControlEventsか?

AppDelegateのUIApplicationDelegateを介して必要なプロトコルを探す必要があります。applicationWillResignActiveとに実装する必要があるようですapplicationDidBecomeActive

ただし、 AppStatesとMultitaskingに関するAppleのドキュメントがあります。アプリケーションの状態を目的に合わせて処理するのに役立つと思います。

お役に立てば幸いです。

于 2012-06-03T19:57:31.073 に答える