- 版本:0.4.0
- GitHub:
- NPM: https://npmjs.net.cn/package/%40nuxstep%2Fnativescript-spotify
- 下载
- 昨天: 0
- 上周: 0
- 上个月: 0
@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
)中,在文件顶部导入 isIOS
和 SpotifyAppRemote
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