I am trying to get ready my app for next version of macOS 10.15 Catalina. I am using scripting bridge in my app, and then trying to get Audio CD information from Catalina's new app, Music.app.
The following is the part of my code:
#import <Cocoa/Cocoa.h>
#import <ScriptingBridge/ScriptingBridge.h>
#import "Music.h"
@implementation ViewController
- (IBAction)pushButton:(id)sender {
MusicApplication* Music = [SBApplication applicationWithBundleIdentifier:@"com.apple.Music"];
SBElementArray *sources = [Music sources];
MusicPlaylist *anAudioCDPlayList = nil;
for (MusicSource *src in sources) {
SBElementArray *playlists = [src audioCDPlaylists];
MusicPlaylist *aPlaylist = playlists[0];
anAudioCDPlayList = [aPlaylist get];
}
for (MusicTrack *aTrack in [anAudioCDPlayList tracks]) {
printf("aTrackName=%s\n",[[aTrack name] UTF8String]);
}
}
@end
I have enabled app sandbox and Entitlements is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.scripting-targets</key>
<dict>
<key>com.apple.Music</key>
<array>
<string>com.apple.iTunes.library.read-write</string>
<string>com.apple.iTunes.user-interface</string>
</array>
</dict>
</dict>
</plist>
I know that I am using the word "iTunes" in entitlements, but it seems correct.
I also added "NSAppleEventsUsageDescription" Key/Value set in info.plist.
Now, I can get Audio CD information on Music.app except track name. My question is Why I can't get Audio CD track name even though other information can be retrieved?