跳到主要内容

开始使用

学习如何在您的项目中设置和使用 React Native Music Library。

安装​

npm install @nodefinity/react-native-music-library
# 或
yarn add @nodefinity/react-native-music-library

平台设置​

Android​

  1. 添加权限到 android/app/src/main/AndroidManifest.xml:
<!-- Android 13+ 细粒度权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<!-- Android 12 及以下传统存储权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 请求运行时权限使用权限库:
import { request, PERMISSIONS, RESULTS } from 'react-native-permissions';

const requestMusicPermission = async () => {
const result = await request(PERMISSIONS.ANDROID.READ_MEDIA_AUDIO);

if (result === RESULTS.GRANTED) {
console.log('音乐权限已授予');
} else {
console.log('音乐权限被拒绝');
}
};

iOS​

  1. 添加权限到 Info.plist:
<key>NSAppleMusicUsageDescription</key>
<string>此应用需要访问您的音乐库来播放歌曲</string>
  1. 请求运行时权限使用权限库:
import { request, PERMISSIONS, RESULTS } from 'react-native-permissions';

const requestMusicPermission = async () => {
const result = await request(PERMISSIONS.IOS.MEDIA_LIBRARY);

if (result === RESULTS.GRANTED) {
console.log('音乐权限已授予');
} else {
console.log('音乐权限被拒绝');
}
};

基本用法​

导入库​

import {
getTracksAsync,
getAlbumsAsync,
getArtistsAsync,
getTrackMetadataAsync,
} from '@nodefinity/react-native-music-library';

获取所有曲目​

const loadTracks = async () => {
try {
const result = await getTracksAsync();

result.items.forEach((track) => {
console.log(`${track.title} - ${track.artist}`);
console.log(
`时长: ${Math.floor(track.duration / 60)}:${track.duration % 60}`
);
console.log(`资源: ${track.contentUri ?? track.url}`);
});
} catch (error) {
console.error('加载曲目失败:', error);
}
};

获取专辑​

const loadAlbums = async () => {
try {
const result = await getAlbumsAsync({
sortBy: ['title', true], // 按标题升序排序
first: 50,
});

result.items.forEach((album) => {
console.log(`${album.title} - ${album.artist}`);
console.log(`曲目数: ${album.trackCount}`);
});
} catch (error) {
console.error('加载专辑失败:', error);
}
};

获取艺术家​

const loadArtists = async () => {
try {
const result = await getArtistsAsync({
sortBy: 'title', // 按名称排序
});

result.items.forEach((artist) => {
console.log(`${artist.title}`);
console.log(`专辑数: ${artist.albumCount}, 曲目数: ${artist.trackCount}`);
});
} catch (error) {
console.error('加载艺术家失败:', error);
}
};

下一步​