@nuxstep/nativescript-spotify
Spotify SDK 集成于 NativeScript(iOS 和 Android)
npm i --save @nuxstep/nativescript-spotify

@nuxstep/nativescript-spotify

重要: 此项目处于早期开发阶段

关于

该项目源于我们的自身需求,因为目前没有适用于 NativeScript 的 Spotify 插件(或者至少是更新的)。

目前,此插件的目标很简单:通过 Spotify App Remote SDK 将 Spotify 集成到您的应用中,以便您可以控制播放并获取用户推荐的内容项。

稍后(可能),我们可以实现 Spotify 身份验证 SDK 和 Web API 以提供更多功能,但这将取决于我们可用的时间和需求,因此,请随时通过问题提交和拉取请求来帮助该项目。

设置

使用以下命令将插件添加到您的 NativeScript 项目中

ns plugin add @nuxstep/nativescript-spotify

Android

在您的应用项目中,转到 App_Resources/Android/src/main/res 并打开 AndroidManifest.xml。在具有名称 com.tns.NativeScriptActivity<activity> 标签内,添加属性 android:launchMode="singleTask",如下所示

<activity
android:name="com.tns.NativeScriptActivity"
android:label="@string/title_activity_kimera"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|locale|uiMode"
android:theme="@style/LaunchScreenTheme"
android:launchMode="singleTask">

在第一个 <activity> 标签关闭之前,添加以下内容

<!-- Custom URI schemes -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data
android:scheme="plugindemo"
android:host="spotify-login-callback" />

</intent-filter>

在这里,您将设置 Spotify App Remote 身份验证的 重定向 URI(读取为 plugindemo://spotify-login-callback)。将 android:scheme 更改为与您的应用相关的名称(例如 myapp)和主机,您可以将主机保留为 spotify-login-callback记下您的 重定向 URI,您将需要它来设置 SpotifyAppRemote 类。

<application> 标签关闭之前,添加以下内容

<!-- Spotify Activity -->
<activity
android:name="com.spotify.sdk.android.authentication.LoginActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

对于 Android 11 或更高版本,您还需要指定哪些其他应用程序可以 查询 您的应用程序(有关详细信息,请参阅此处)。为此,只需在 <manifest> 标签下添加以下片段即可

<queries>
<package android:name="com.spotify.music" />
</queries>

您还需要一个 应用指纹。有关创建应用指纹的说明,请参阅 https://developer.spotify.com/documentation/android/quick-start/#register-app-fingerprints。请 记下 它,因为您稍后需要它。

iOS

在您的应用项目中,转到 App_Resources/iOS 并打开 Info.plist。在文件的末尾,在最后一个 </dict> 标签关闭之前,添加以下内容

<key>LSApplicationQueriesSchemes</key>
<array>
<string>spotify</string>
</array>

这允许 Spotify SDK 通过其 URL 方案打开 Spotify 应用。之后,添加以下内容

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.nuxstep.nativescript.plugindemo</string>
<key>CFBundleURLSchemes</key>
<array>
<string>plugindemo</string>
</array>
</dict>
</array>

com.nuxstep.nativescript.plugindemo 更改为您的 应用包名。还将 plugindemo 更改为您的应用 URL 方案。为了简化,请使用与 Android 相同的 URL 方案

在您的 应用入口点(通常是 app.ts)中,在文件顶部导入 isIOSSpotifyAppRemote

import { isIOS } from '@nativescript/core';
import { SpotifyAppRemote } from '@nuxstep/nativescript-spotify';

然后,在您的应用开始之前实现一个自定义 应用代理,通常在 Application.run() 之前,如果您使用的是纯 NativeScript。

/**
* Implement a custom AppDelegate on iOS so we can get the access token
* returned from Spotify and store it on SpotifyAppRemote class
*/
if (isIOS) {
@NativeClass()
class AppDelegate extends UIResponder implements UIApplicationDelegate {
public static ObjCProtocols = [UIApplicationDelegate];

applicationOpenURLOptions(_application: UIApplication, url: NSURL, _options: any): boolean {
SpotifyAppRemote.setAuthorizationParameters(url);
return true;
}
}
Application.ios.delegate = AppDelegate;
}

如果您 使用 TypeScript,请参阅 https://v7.docs.nativescript.org/core-concepts/application-lifecycle#ios-uiapplicationdelegate 了解如何使用 JavaScript 实现应用代理。

Spotify 开发者

前往 https://developer.spotify.com/dashboard 并注册一个开发者账户。

在仪表板中,单击 创建应用 并提供名称和描述。

在您的应用仪表板中,点击 编辑设置。将 重定向URI 设置为您之前定义的(例如:myapp://spotify-login-callback),然后点击 添加

包标识符 部分中,输入您的应用包名(例如:com.example.myapp),然后点击 添加。这是iOS使用的。

Android包 部分中,输入您的 应用包名(例如:com.example.myapp),并输入您之前创建的 应用指纹。点击 添加,然后点击 保存 完成。

记下 您的 客户端ID,您将需要它在设置 SpotifyAppRemote 类时使用。

用法

首先,您需要将 客户端ID重定向URI 传递给 SpotifyAppRemote 类。您可以在自定义 app代理 之前在 应用入口点 中这样做。

SpotifyAppRemote.setClientId('SPOTIFY_CLIENT_ID');
SpotifyAppRemote.setRedirectUri('APP_REDIRECT_URI');

在您想使用 SpotifyAppRemote 的页面中,将以下内容添加到文件顶部

import { isIOS } from '@nativescript/core';
import { SpotifyAppRemote } from '@nuxstep/nativescript-spotify';

然后,在您想连接到 SpotifyAppRemote 的位置

/**
* If platform is iOS, we need to open the app and start playback
* before connecting to SpotifyAppRemote. This is an iOS-specific
* limitation.
*/
if (isIOS) {
await SpotifyAppRemote.authorizeAndPlayURI();
}

await SpotifyAppRemote.connect();

您可以将任何 Spotify URI 传递给 authorizeAndPlayURI()。如果您传递一个空字符串或没有任何参数,它将尝试播放用户上次播放的歌曲。

要了解如何使用此插件,请参阅

稍后,此README将更新为可用的方法。

许可证

Apache许可证版本2.0