実機で動作検証時の際にロック画面に音楽の情報や再生・停止などの制御ができなくなる問題


iOS 10よりも前の場合は特に問題なかったが、iOS 10になってからロック画面への音楽情報の表示や、再生などの制御が実機でできない。
なぜかシミュレーターではちゃんと表示や再生制御ができる。

以下のようにセッションを定義しているとできないらしい。

AVAudioSessionSetting_NG.m
AVAudioSession *session = nil;
session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback
         withOptions:AVAudioSessionCategoryOptionMixWithOthers |
                     AVAudioSessionCategoryOptionDuckOthers];

正しくは、以下。

AVAudioSessionSetting_OK.m
AVAudioSession *session = nil;
session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback];

裏でこそこそ仕様が変わるのはAppleの御家芸だけれど、シミュレーターがちゃんとシミュレートしてくれないからどこに原因があるのか、最初、さっぱりわからなかった…。お陰様でApple Developersに年会費払ってなかったのが原因かと思って年会費まで払ってしまった。金返せAppleめ…💢