authorizationForMusic requestAuthorization scanMusic copyToSandbox cancelCopyToSandbox cleanCach presentMusic
在 iOS 端,系统自带有音乐播放的 App ,名字叫 Music。用户可以删除该 App,也可以在 Apple Store 搜索下载该 App。music 原生插件封装了 iOS 平台上访问音乐库的相关接口。通过本原生插件可以判断当前 App 访问音乐权限,并支持扫描并获取 Music 里的被授权的音频文件。注意,由于知识产权原因,并不是所有 Music 内的音频文件都能获取,从苹果音乐服务器下载的音频文件获取不到,只能获取通过电脑同步到 Music 这个 App 里的音频文件。
使用本原生插件,需在云编译时申请访问音乐库权限。否则调用本原生插件接口会闪退,上传 App Store 也会被拒。
判断是否有访问音乐库权限
authorizationForMusic(callback(ret))
ret:
{
status: '' //字符串类型;权限详情,取值范围如下:
//notDetermined: 用户从未选择过权限
//restricted:无法使用音乐库服务,该状态用户无法改变
//denied:户拒绝该应用使用音乐库服务
//authorized:用户允许该程序访问音乐库
}
var music = api.require('music');
music.authorizationForMusic(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS 系统
可提供的 1.0.0 及更高版本
请求访问音乐库权限
requestAuthorization(callback(ret))
ret:
{
status: '' //字符串类型;权限详情,取值范围如下:
//notDetermined: 用户从未选择过权限
//restricted:无法使用音乐库服务,该状态用户无法改变
//denied:户拒绝该应用使用音乐库服务
//authorized:用户允许该程序访问音乐库
}
var music = api.require('music');
music.requestAuthorization(function(ret) {
if (ret) {
api.alert({
msg: JSON.stringify(ret)
})
}
});
iOS 系统
可提供的 1.0.0 及更高版本
扫描 Music 内的音频文件
scanMusic({params},callback(ret, err))
thumbnail:
{
width: , //(可选项)缩略图宽度;默认:72
height: //(可选项)缩略图高度;默认:72
}
iCloud:
ret:
{
status: true, //布尔型;是否获取成功
audios:[{ //数组类型;获取的音频资源信息组成的数组
artist: '', //字符串类型;音频作者
title: '', //字符串类型;音频标题
url: '', //字符串类型;音频地址
albumTitle: '' //字符串类型;音频专辑
duration:, //数字类型;音频时长;单位:毫秒
thumbnail: //字符串类型;缩略图路径
}]
}
err:
{
code:1 //数字类型;错误码:
//1:无访问音乐库权限
}
var music = api.require('music');
music.scanMusic({
thumbnail:{
width:72,
height:72
},
iCloud:false
},function(ret, err) {
if (ret.status) {
api.alert({msg:JSON.stringify(ret)});
} else {
api.alert({msg:JSON.stringify(err)});
}
});
iOS 系统
可提供的 1.0.0 及更高版本
将音乐库的音频文件拷贝到沙盒
copyToSandbox({params},callback(ret, err))
url:
savePath:
ret:
{
status: true, //布尔型;是否拷贝成功
realPath: //字符串类型;路径类型
}
err:
{
code:1 //数字类型;错误码:
//1:url为空
//2:资源初始化失败
//3:资源读取失败
}
var music = api.require('music');
music.copyToSandbox({
url:'ipod-library://item/item.mp3?id=4559289265963493915'
},function(ret, err) {
if (ret.status) {
api.alert({msg:JSON.stringify(ret)});
} else {
api.alert({msg:JSON.stringify(err)});
}
});
iOS 系统
可提供的 1.0.0 及更高版本
取消音乐库的音频文件拷贝到沙盒
cancelCopyToSandbox(callback(ret, err))
ret:
{
status: true //布尔型;true:取消成功,false:当前未有拷贝中的音频
}
var music = api.require('music');
music.cancelCopyToSandbox(function(ret) {
if (ret.status) {
api.alert({msg:'取消成功'});
} else {
api.alert({msg:'当前未有拷贝中的音频'});
}
});
iOS 系统
可提供的 1.0.0 及更高版本
清空缓存
cleanCach({params},callback(ret, err))
url:
ret:
{
status: true, //布尔型;是否清除成功
}
err:
{
code:1 //数字类型;错误码:
userInfo:'' //字符串类型;错误信息
}
var music = api.require('music');
music.cleanCach({
target:'all'
},function(ret, err) {
if (ret.status) {
api.alert({msg:'清除成功'});
} else {
api.alert({msg:JSON.stringify(err)});
}
});
iOS 系统
可提供的 1.0.0 及更高版本
弹出系统自带选择音频页面
presentMusic({params},callback(ret, err))
multiple:
showsCloudItems:
thumbnail:
{
width: , //(可选项)缩略图宽度;默认:72
height: //(可选项)缩略图高度;默认:72
}
ret:
{
eventType:'show', //字符串类型;交互事件类型
//show:弹出选择界面
//cancel:用户取消
//selected:用户选择完成
audios:[{ //数组类型;获取的音频资源信息组成的数组,仅当 eventType 为 selected 时有值
artist: '', //字符串类型;音频作者
title: '', //字符串类型;音频标题
url: '', //字符串类型;音频地址
albumTitle: '' //字符串类型;音频专辑
duration:, //数字类型;音频时长;单位:毫秒
thumbnail: //字符串类型;缩略图路径
}]
}
var music = api.require('music');
music.presentMusic({
multiple:true,
showsCloudItems:true
},function(ret) {
if (ret) {
api.alert({msg:JSON.stringify(ret)});
}
});
iOS 系统
可提供的 1.0.0 及更高版本