Populating Now Playing with Objective-C

Hello. I am attempting to display the music inside of my app in Now Playing. I've tried a few different methods and keep running into unknown issues. I'm new to Objective-C and Apple development so I'm at a loss of how to continue.

Currently, I have an external call to viewDidLoad upon initialization. Then, when I'm ready to play the music, I call playMusic. I have it hardcoded to play an mp3 called "1". I believe I have all the signing set up as the music plays after I exit the app. However, there is nothing in Now Playing. There are no errors or issues that I can see while the app is running. This is the only file I have in Xcode relating to this feature.

Please let me know where I'm going wrong or if there is another object I need to use!

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <AVFoundation/AVFoundation.h>

@interface ViewController : UIViewController <AVAudioPlayerDelegate>

@property (nonatomic, strong) AVPlayer *player;
@property (nonatomic, strong) MPRemoteCommandCenter *commandCenter;
@property (nonatomic, strong) MPMusicPlayerController *controller;
@property (nonatomic, strong) MPNowPlayingSession *nowPlayingSession;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"viewDidLoad started.");
    [self setupAudioSession];
    [self initializePlayer];
    [self createNowPlayingSession];
    [self configureNowPlayingInfo];
    NSLog(@"viewDidLoad completed.");
}

- (void)setupAudioSession {
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];

    NSError *setCategoryError = nil;
    if (![audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError]) {
        NSLog(@"Error setting category: %@", [setCategoryError localizedDescription]);
    } else {
        NSLog(@"Audio session category set.");
    }

    NSError *activationError = nil;
    if (![audioSession setActive:YES error:&activationError]) {
        NSLog(@"Error activating audio session: %@", [activationError localizedDescription]);
    } else {
        NSLog(@"Audio session activated.");
    }
}

- (void)initializePlayer {
    NSString *soundFilePath = [NSString stringWithFormat:@"%@/base/game/%@",[[NSBundle mainBundle] resourcePath], @"bgm/1.mp3"];
    if (!soundFilePath) {
        NSLog(@"Audio file not found.");
        return;
    }
    
    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
    self.player = [AVPlayer playerWithURL:soundFileURL];
    NSLog(@"Player initialized with URL: %@", soundFileURL);
}

- (void)createNowPlayingSession {
    self.nowPlayingSession = [[MPNowPlayingSession alloc] initWithPlayers:@[self.player]];
    NSLog(@"Now Playing Session created with players: %@", self.nowPlayingSession.players);
}

- (void)configureNowPlayingInfo {
    MPNowPlayingInfoCenter *infoCenter = [MPNowPlayingInfoCenter defaultCenter];

    CMTime duration = self.player.currentItem.duration;
    Float64 durationSeconds = CMTimeGetSeconds(duration);
    CMTime currentTime = self.player.currentTime;
    Float64 currentTimeSeconds = CMTimeGetSeconds(currentTime);

    NSDictionary *nowPlayingInfo = @{
        MPMediaItemPropertyTitle: @"Example Title",
        MPMediaItemPropertyArtist: @"Example Artist",
        MPMediaItemPropertyPlaybackDuration: @(durationSeconds),
        MPNowPlayingInfoPropertyElapsedPlaybackTime: @(currentTimeSeconds),
        MPNowPlayingInfoPropertyPlaybackRate: @(self.player.rate)
    };

    infoCenter.nowPlayingInfo = nowPlayingInfo;
    NSLog(@"Now Playing info configured: %@", nowPlayingInfo);
}

- (void)playMusic {
    [self.player play];
    [self createNowPlayingSession];
    [self configureNowPlayingInfo];
}

- (void)pauseMusic {
    [self.player pause];
    [self configureNowPlayingInfo];
}

@end
Populating Now Playing with Objective-C
 
 
Q