CrossMediaManager でメディア アイテムのリストを再生しようとしています。ただし、IOS ではおかしなエラーが発生して再生されませんが、Android では同じコードが機能します。単一の文字列 URL またはメディア アイテムを渡すと機能しますが、複数の URL では機能しません。
static async Task<MediaItem> GenerateReciterMediaItem(string fileUri, AudioReciter reciter, byte chapterId)
{
Chapter c = await Chapter.GetChapterAsync(chapterId);
var item = (MediaItem)await CrossMediaManager.Current.Extractor.CreateMediaItem(fileUri);
item.MediaType = MediaType.Audio;
var reciterImageUri = Path.Combine("http://www.azee.tech/reciters/r9.png"); //doesn't work
//another url for image reciter.azee.tech/r9.png --> also doesn't work
var image = new Image() { Source = ImageSource.FromUri(new Uri(reciterImageUri))};
int type = 1;
if (item != null)
{
item.Id = string.Format("{0},{1},{2}", type, chapterId, reciter.ReciterID);
item.IsMetadataExtracted = false;
item.Title = reciter.Name;
item.Album = string.Format("{0} - {1} ({2})", c.ChapterID, c.ArabicEnglishName, c.EnglishName);
item.Artist = reciter.Name;
item.AlbumImage = image;
item.AlbumImageUri = reciterImageUri;
item.DisplayImage = image;
item.DisplayImageUri = reciterImageUri;
item.Image = image;
item.ImageUri = reciterImageUri;
}
return item;
}
static async Task AddAudioReciterTrackToQueue()
{
//list of urls --> https://www.azee.tech/MaherAlMuaiqly64kbps/001.mp3 , 002.mp3, 003.mp3 and so on
foreach(var url in listOfUrls)
{
var fileUri = listOfUrls[i];
var item = await GenerateReciterMediaItem(fileUri, type, reciter, chapterId);
CrossMediaManager.Current.Queue.Add(item);
}
}
async Task PlayQueue()
{
CrossMediaManager.Current.AutoPlay = true;
await AddAudioReciterTrackToQueue();
await CrossMediaManager.Current.Play(CrossMediaManager.Current.Queue.MediaItems); //doesnt work
await CrossMediaManager.Current.Play(); //doesn't work
}
デバッグからのエラー
2020-09-15 22:31:43.550896+0100 wQuran.iOS[29476:23403374] - [AVAsset loadValuesAsynchronouslyForKeys:completionHandler:] が認識されないキー ( albumName、author、title、artist ) で呼び出されました。[0:] state changed Buffering Thread started: #22 2020-09-15 22:31:43.758802+0100 wQuran.iOS[29476:23404151] -[AVAsset loadValuesAsynchronouslyForKeys:completionHandler:] 認識されないキー ( artwork ) で呼び出されました。
ファイルをダウンロードしてローカル リソースから再生するとします。エラーなし。このドメインからの https を無視するために、info.plist にトランスポート セキュリティも追加しました。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.azee.tech</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>