@wwdrew/expo-spotify-sdk 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +32 -2
  2. package/android/build.gradle +4 -5
  3. package/android/libs/SETUP.md +9 -24
  4. package/android/spotify-native-sdk.gradle +116 -0
  5. package/android/src/main/java/expo/modules/spotifysdk/ExpoSpotifySDKModule.kt +12 -1
  6. package/android/src/main/java/expo/modules/spotifysdk/SpotifyAppRemoteCoordinator.kt +32 -0
  7. package/build/app-remote/index.d.ts +9 -0
  8. package/build/app-remote/index.d.ts.map +1 -1
  9. package/build/app-remote/index.js +11 -0
  10. package/build/app-remote/index.js.map +1 -1
  11. package/ios/ExpoSpotifyAppDelegate.swift +8 -1
  12. package/ios/ExpoSpotifySDK.podspec +26 -2
  13. package/ios/ExpoSpotifySDKModule.swift +16 -1
  14. package/ios/SpotifyAppRemoteConnection.swift +221 -0
  15. package/ios/SpotifyAppRemoteCoordinator.swift +14 -114
  16. package/ios/SpotifyAuthCoordinator.swift +3 -8
  17. package/ios/SpotifyMainThread.swift +14 -0
  18. package/ios/spotify-native-sdk-versions.json +12 -0
  19. package/package.json +10 -4
  20. package/ios/SpotifySDK/Licenses/MPMessagePack-LICENSE.md +0 -20
  21. package/ios/SpotifySDK/SpotifyiOS.xcframework/Info.plist +0 -40
  22. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemote.h +0 -287
  23. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteAlbum.h +0 -18
  24. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteArtist.h +0 -18
  25. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteCommon.h +0 -37
  26. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteConnectionParams.h +0 -65
  27. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteConnectivityAPI.h +0 -55
  28. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteConnectivityState.h +0 -15
  29. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteContentAPI.h +0 -78
  30. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteContentItem.h +0 -49
  31. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteCrossfadeState.h +0 -18
  32. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteImageAPI.h +0 -25
  33. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteImageRepresentable.h +0 -16
  34. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteLibraryState.h +0 -19
  35. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemotePlaybackOptions.h +0 -32
  36. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemotePlaybackRestrictions.h +0 -32
  37. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemotePlayerAPI.h +0 -267
  38. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemotePlayerState.h +0 -40
  39. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemotePodcastPlaybackSpeed.h +0 -15
  40. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteTrack.h +0 -52
  41. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteUserAPI.h +0 -102
  42. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTAppRemoteUserCapabilities.h +0 -15
  43. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTConfiguration.h +0 -66
  44. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTError.h +0 -31
  45. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTLogin.h +0 -10
  46. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTMacros.h +0 -125
  47. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTScope.h +0 -75
  48. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTSession.h +0 -33
  49. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SPTSessionManager.h +0 -170
  50. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SpotifyAppRemote.h +0 -28
  51. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Headers/SpotifyiOS.h +0 -7
  52. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Info.plist +0 -0
  53. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/Modules/module.modulemap +0 -5
  54. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/PrivacyInfo.xcprivacy +0 -14
  55. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64/SpotifyiOS.framework/SpotifyiOS +0 -0
  56. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemote.h +0 -287
  57. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteAlbum.h +0 -18
  58. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteArtist.h +0 -18
  59. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteCommon.h +0 -37
  60. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteConnectionParams.h +0 -65
  61. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteConnectivityAPI.h +0 -55
  62. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteConnectivityState.h +0 -15
  63. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteContentAPI.h +0 -78
  64. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteContentItem.h +0 -49
  65. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteCrossfadeState.h +0 -18
  66. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteImageAPI.h +0 -25
  67. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteImageRepresentable.h +0 -16
  68. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteLibraryState.h +0 -19
  69. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemotePlaybackOptions.h +0 -32
  70. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemotePlaybackRestrictions.h +0 -32
  71. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemotePlayerAPI.h +0 -267
  72. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemotePlayerState.h +0 -40
  73. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemotePodcastPlaybackSpeed.h +0 -15
  74. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteTrack.h +0 -52
  75. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteUserAPI.h +0 -102
  76. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTAppRemoteUserCapabilities.h +0 -15
  77. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTConfiguration.h +0 -66
  78. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTError.h +0 -31
  79. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTLogin.h +0 -10
  80. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTMacros.h +0 -125
  81. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTScope.h +0 -75
  82. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTSession.h +0 -33
  83. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SPTSessionManager.h +0 -170
  84. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SpotifyAppRemote.h +0 -28
  85. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Headers/SpotifyiOS.h +0 -7
  86. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Info.plist +0 -0
  87. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/Modules/module.modulemap +0 -5
  88. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/PrivacyInfo.xcprivacy +0 -14
  89. package/ios/SpotifySDK/SpotifyiOS.xcframework/ios-arm64_x86_64-simulator/SpotifyiOS.framework/SpotifyiOS +0 -0
@@ -1,31 +0,0 @@
1
- #import <Foundation/Foundation.h>
2
-
3
- #import "SPTMacros.h"
4
-
5
- NS_ASSUME_NONNULL_BEGIN
6
-
7
- SPT_EXPORT NSErrorDomain const SPTLoginErrorDomain;
8
-
9
- /// Spotify error codes, use NSUnderlyingErrorKey to see the underlying error
10
- typedef NS_ENUM(NSUInteger, SPTErrorCode) {
11
- /// Unknown error code
12
- SPTUnknownErrorCode NS_SWIFT_NAME(unknown) = 0,
13
- /// Authorization failed
14
- SPTAuthorizationFailedErrorCode NS_SWIFT_NAME(authorizationFailed),
15
- /// Renew session failed
16
- SPTRenewSessionFailedErrorCode NS_SWIFT_NAME(renewSessionFailed),
17
- /// Failed to parse the returned JSON
18
- SPTJSONFailedErrorCode NS_SWIFT_NAME(jsonFailed) };
19
-
20
- /// Spotify-specific errors. Use NSUnderlyingErrorKey to see the underlying error
21
- @interface SPTError : NSError
22
-
23
- + (instancetype)errorWithCode:(SPTErrorCode)code;
24
-
25
- + (instancetype)errorWithCode:(SPTErrorCode)code description:(NSString *)description;
26
-
27
- + (instancetype)errorWithCode:(SPTErrorCode)code underlyingError:(NSError *)error;
28
-
29
- @end
30
-
31
- NS_ASSUME_NONNULL_END
@@ -1,10 +0,0 @@
1
- #ifndef _SPOTIFYLOGIN_
2
- #define _SPOTIFYLOGIN_
3
-
4
- #import "SPTConfiguration.h"
5
- #import "SPTError.h"
6
- #import "SPTScope.h"
7
- #import "SPTSession.h"
8
- #import "SPTSessionManager.h"
9
-
10
- #endif /* _SPOTIFYLOGIN_ */
@@ -1,125 +0,0 @@
1
- #ifndef SPT_MACROS
2
- #define SPT_MACROS
3
-
4
- #ifdef __cplusplus
5
- #define SPT_EXPORT extern "C" __attribute__((visibility("default")))
6
- #else
7
- #define SPT_EXPORT extern __attribute__((visibility("default")))
8
- #endif // __cplusplus
9
-
10
- #define SPT_DEPRECATED(MESSAGE) __attribute__((deprecated(MESSAGE)))
11
- #define SPT_UNAVAILABLE __attribute__((unavailable))
12
- #define SPT_UNUSED __attribute__((unused))
13
- #define SPT_UNREACHABLE() __builtin_unreachable()
14
-
15
- #define SPT_INLINE __attribute__((always_inline)) inline
16
- #define SPT_CONST __attribute__((const))
17
- #define SPT_PURE __attribute__((pure))
18
-
19
- #define SPT_NONNULL __attribute__((nonnull))
20
- #define SPT_RETURNS_NONNULL __attribute__((returns_nonnull))
21
-
22
- #define SPT_EXPECT(EXPR, VAL) __builtin_expect(!!(EXPR), VAL)
23
- #define SPT_LIKELY(EXPR) SPT_EXPECT(EXPR, 1)
24
- #define SPT_UNLIKELY(EXPR) SPT_EXPECT(EXPR, 0)
25
-
26
- #define SPT_MAX_POW2(TYPE_MAX) ((TYPE_MAX >> 1) ^ TYPE_MAX)
27
-
28
- #define SPT_EXPR_OR_ZERO(EXPR) __builtin_choose_expr(SPT_TYPE_IS_VOID(EXPR), 0, (EXPR))
29
- #define SPT_TYPE_IS_VOID(EXPR) __builtin_types_compatible_p(typeof(EXPR), void)
30
-
31
- /**
32
- Check if the receiver responds to a selector, then send the message,
33
- along with the provided parameters.
34
-
35
- The purpose of this macro, other than to make code less cluttered, is to make
36
- it impossible to accidentally check for a selector but send a different message.
37
-
38
- @param RECEIVER The object to which the message will be sent.
39
- @param RESULT[out] A pointer to which the return value will be assigned.
40
- @param ... 0-4 arguments.
41
- \code{.m}
42
- BOOL result = NO;
43
- SPT_OPTIONAL_MESSAGE_SEND(self.delegate, &result, someThingie, self, didSomethingWith, someObject);
44
- // Expands to the following:
45
- do {
46
- if ([self.delegate respondsToSelector:@selector(someThingie:didSomethingWith:)])
47
- *(result) = [self.delegate someThingie:self didSomethingWith:someObject)];
48
- } while (0);
49
- \endcode
50
- */
51
- #define SPT_OPTIONAL_MESSAGE_SEND(RECEIVER, RESULT, ...) \
52
- do { \
53
- if ([RECEIVER respondsToSelector:@selector(SPT_CONCAT_SELECTOR(__VA_ARGS__))]) \
54
- *(RESULT) = [RECEIVER SPT_CONCAT_METHOD(__VA_ARGS__)]; \
55
- } while (0)
56
-
57
- /**
58
- Like SPT_OPTIONAL_MESSAGE_SEND but ignores the return value.
59
- @param RECEIVER The object to which the message will be sent.
60
- @param ... 0-4 arguments.
61
- */
62
- #define SPT_OPTIONAL_MESSAGE_SEND_(RECEIVER, ...) \
63
- do { \
64
- if ([RECEIVER respondsToSelector:@selector(SPT_CONCAT_SELECTOR(__VA_ARGS__))]) \
65
- [RECEIVER SPT_CONCAT_METHOD(__VA_ARGS__)]; \
66
- } while (0)
67
-
68
- // Some boilerplate for SPT_OPTIONAL_MESSAGE_SEND[_]
69
- #define SPT_CONCAT_METHOD8(A, _1, B, _2, C, _3, D, _4) \
70
- A: \
71
- _1 B : _2 C : _3 D : _4
72
- #define SPT_CONCAT_METHOD6(A, _1, B, _2, C, _3) \
73
- A: \
74
- _1 B : _2 C : _3
75
- #define SPT_CONCAT_METHOD4(A, _1, B, _2) \
76
- A: \
77
- _1 B : _2
78
- #define SPT_CONCAT_METHOD2(A, _1) \
79
- A: \
80
- _1
81
- #define SPT_CONCAT_METHOD1(A) A
82
-
83
- #define SPT_CONCAT_SELECTOR8(A, _1, B, _2, C, _3, D, _4) \
84
- A: \
85
- B: \
86
- C: \
87
- D:
88
- #define SPT_CONCAT_SELECTOR6(A, _1, B, _2, C, _3) \
89
- A: \
90
- B: \
91
- C:
92
- #define SPT_CONCAT_SELECTOR4(A, _1, B, _2) \
93
- A: \
94
- B:
95
- #define SPT_CONCAT_SELECTOR2(A, _1) \
96
- A:
97
- #define SPT_CONCAT_SELECTOR1(A) A
98
-
99
- #define SPT_PICK_CONCAT_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, NAME, ...) NAME
100
-
101
- #define SPT_CONCAT_METHOD(...) \
102
- SPT_PICK_CONCAT_MACRO(__VA_ARGS__, \
103
- SPT_CONCAT_METHOD8, \
104
- SPT_CONCAT_METHOD7, \
105
- SPT_CONCAT_METHOD6, \
106
- SPT_CONCAT_METHOD5, \
107
- SPT_CONCAT_METHOD4, \
108
- SPT_CONCAT_METHOD3, \
109
- SPT_CONCAT_METHOD2, \
110
- SPT_CONCAT_METHOD1) \
111
- (__VA_ARGS__)
112
-
113
- #define SPT_CONCAT_SELECTOR(...) \
114
- SPT_PICK_CONCAT_MACRO(__VA_ARGS__, \
115
- SPT_CONCAT_SELECTOR8, \
116
- SPT_CONCAT_SELECTOR7, \
117
- SPT_CONCAT_SELECTOR6, \
118
- SPT_CONCAT_SELECTOR5, \
119
- SPT_CONCAT_SELECTOR4, \
120
- SPT_CONCAT_SELECTOR3, \
121
- SPT_CONCAT_SELECTOR2, \
122
- SPT_CONCAT_SELECTOR1) \
123
- (__VA_ARGS__)
124
-
125
- #endif // SPT_MACROS
@@ -1,75 +0,0 @@
1
- #import <Foundation/Foundation.h>
2
-
3
- // (Objective-C identifier, Swift name, string value, bit flag)
4
- #define SPT_SCOPE_LIST \
5
- SPT_SCOPE(SPTPlaylistReadPrivateScope, playlistReadPrivate, "playlist-read-private", (1 << 0)) \
6
- SPT_SCOPE(SPTPlaylistReadCollaborativeScope, playlistReadCollaborative, "playlist-read-collaborative", (1 << 1)) \
7
- SPT_SCOPE(SPTPlaylistModifyPublicScope, playlistModifyPublic, "playlist-modify-public", (1 << 2)) \
8
- SPT_SCOPE(SPTPlaylistModifyPrivateScope, playlistModifyPrivate, "playlist-modify-private", (1 << 3)) \
9
- SPT_SCOPE(SPTUserFollowReadScope, userFollowRead, "user-follow-read", (1 << 4)) \
10
- SPT_SCOPE(SPTUserFollowModifyScope, userFollowModify, "user-follow-modify", (1 << 5)) \
11
- SPT_SCOPE(SPTUserLibraryReadScope, userLibraryRead, "user-library-read", (1 << 6)) \
12
- SPT_SCOPE(SPTUserLibraryModifyScope, userLibraryModify, "user-library-modify", (1 << 7)) \
13
- SPT_SCOPE(SPTUserReadBirthDateScope, userReadBirthDate, "user-read-birthdate", (1 << 8)) \
14
- SPT_SCOPE(SPTUserReadEmailScope, userReadEmail, "user-read-email", (1 << 9)) \
15
- SPT_SCOPE(SPTUserReadPrivateScope, userReadPrivate, "user-read-private", (1 << 10)) \
16
- SPT_SCOPE(SPTUserTopReadScope, userTopRead, "user-top-read", (1 << 11)) \
17
- SPT_SCOPE(SPTUGCImageUploadScope, ugcImageUpload, "ugc-image-upload", (1 << 12)) \
18
- SPT_SCOPE(SPTStreamingScope, streaming, "streaming", (1 << 13)) \
19
- SPT_SCOPE(SPTAppRemoteControlScope, appRemoteControl, "app-remote-control", (1 << 14)) \
20
- SPT_SCOPE(SPTUserReadPlaybackStateScope, userReadPlaybackState, "user-read-playback-state", (1 << 15)) \
21
- SPT_SCOPE(SPTUserModifyPlaybackStateScope, userModifyPlaybackState, "user-modify-playback-state", (1 << 16)) \
22
- SPT_SCOPE(SPTUserReadCurrentlyPlayingScope, userReadCurrentlyPlaying, "user-read-currently-playing", (1 << 17)) \
23
- SPT_SCOPE(SPTUserReadRecentlyPlayedScope, userReadRecentlyPlayed, "user-read-recently-played", (1 << 18)) \
24
- SPT_SCOPE(SPTOpenIdScope, openid, "openid", (1 << 19))
25
-
26
- /**
27
- `SPTScope` represents the OAuth scopes that declare how your app wants to access a user's account.
28
- See https://developer.spotify.com/web-api/using-scopes/ for more information.
29
- */
30
- typedef NS_OPTIONS(NSUInteger, SPTScope) {
31
- /// Read access to user's private playlists.
32
- SPTPlaylistReadPrivateScope NS_SWIFT_NAME(playlistReadPrivate) = (1 << 0),
33
- /// Include collaborative playlists when requesting a user's playlists.
34
- SPTPlaylistReadCollaborativeScope NS_SWIFT_NAME(playlistReadCollaborative) = (1 << 1),
35
- /// Write access to a user's public playlists.
36
- SPTPlaylistModifyPublicScope NS_SWIFT_NAME(playlistModifyPublic) = (1 << 2),
37
- /// Write access to a user's private playlists.
38
- SPTPlaylistModifyPrivateScope NS_SWIFT_NAME(playlistModifyPrivate) = (1 << 3),
39
- /// Read access to the list of artists and other users that the user follows.
40
- SPTUserFollowReadScope NS_SWIFT_NAME(userFollowRead) = (1 << 4),
41
- /// Write/delete access to the list of artists and other users that the user follows.
42
- SPTUserFollowModifyScope NS_SWIFT_NAME(userFollowModify) = (1 << 5),
43
- /// Read access to a user's "Your Music" library.
44
- SPTUserLibraryReadScope NS_SWIFT_NAME(userLibraryRead) = (1 << 6),
45
- /// Write/delete access to a user's "Your Music" library.
46
- SPTUserLibraryModifyScope NS_SWIFT_NAME(userLibraryModify) = (1 << 7),
47
- /// Read access to the user's birthdate.
48
- SPTUserReadBirthDateScope NS_SWIFT_NAME(userReadBirthDate) = (1 << 8),
49
- /// Read access to user’s email address.
50
- SPTUserReadEmailScope NS_SWIFT_NAME(userReadEmail) = (1 << 9),
51
- /// Read access to user’s subscription details (type of user account).
52
- SPTUserReadPrivateScope NS_SWIFT_NAME(userReadPrivate) = (1 << 10),
53
- /// Read access to a user's top artists and tracks.
54
- SPTUserTopReadScope NS_SWIFT_NAME(userTopRead) = (1 << 11),
55
- /// Upload user generated content images
56
- SPTUGCImageUploadScope NS_SWIFT_NAME(ugcImageUpload) = (1 << 12),
57
- /// Control playback of a Spotify track.
58
- SPTStreamingScope NS_SWIFT_NAME(streaming) = (1 << 13),
59
- /// Use App Remote to control playback in the Spotify app
60
- SPTAppRemoteControlScope NS_SWIFT_NAME(appRemoteControl) = (1 << 14),
61
- /// Read access to a user’s player state.
62
- SPTUserReadPlaybackStateScope NS_SWIFT_NAME(userReadPlaybackState) = (1 << 15),
63
- /// Write access to a user’s playback state
64
- SPTUserModifyPlaybackStateScope NS_SWIFT_NAME(userModifyPlaybackState) = (1 << 16),
65
- /// Read access to a user’s currently playing
66
- /// track
67
- SPTUserReadCurrentlyPlayingScope NS_SWIFT_NAME(userReadCurrentlyPlaying) = (1 << 17),
68
- /// Read access to a user’s currently
69
- /// playing track
70
- SPTUserReadRecentlyPlayedScope NS_SWIFT_NAME(userReadRecentlyPlayed) = (1 << 18),
71
- /// Indicate that the application
72
- /// intends to use OIDC to verify the
73
- /// user's identity
74
- SPTOpenIdScope NS_SWIFT_NAME(openid) = (1 << 19),
75
- };
@@ -1,33 +0,0 @@
1
- #import "SPTScope.h"
2
-
3
- NS_ASSUME_NONNULL_BEGIN
4
-
5
-
6
- /// The `SPTSession` represents an authenticated Spotify user session.
7
- @interface SPTSession : NSObject <NSSecureCoding>
8
-
9
- /// The access token of the authenticated user.
10
- @property (nonatomic, readonly, copy) NSString *accessToken;
11
-
12
- /// The refresh token.
13
- @property (nonatomic, readonly, copy) NSString *refreshToken;
14
-
15
- /// The expiration date of the access token.
16
- @property (nonatomic, readonly, copy) NSDate *expirationDate;
17
-
18
- /// The scope granted.
19
- @property (nonatomic, readonly) SPTScope scope;
20
-
21
- /**
22
- Check whether the session has expired. `YES` if expired; `NO` otherwise.
23
- Note: The session is considered expired once the current date and time is equal to or greater than the expiration date
24
- and time.
25
- */
26
- @property (nonatomic, readonly, getter=isExpired) BOOL expired;
27
-
28
- - (instancetype)init NS_UNAVAILABLE;
29
-
30
- @end
31
-
32
-
33
- NS_ASSUME_NONNULL_END
@@ -1,170 +0,0 @@
1
- #import <UIKit/UIKit.h>
2
- #import "SPTScope.h"
3
-
4
- NS_ASSUME_NONNULL_BEGIN
5
-
6
- @class SPTConfiguration, SPTSession;
7
- @protocol SPTSessionManagerDelegate;
8
-
9
- /// Options for determining the most suitable method for authorization
10
- typedef NS_OPTIONS(NSUInteger, SPTAuthorizationOptions) {
11
- /// Authorize using a suitable method. If Spotify is installed the app will be used instead of ASWebAuthentication.
12
- SPTDefaultAuthorizationOption NS_SWIFT_NAME(default) = (0),
13
- /// Authorize using only the Spotify client. If Spotify is not installed authorization will fail.
14
- SPTClientAuthorizationOption NS_SWIFT_NAME(clientOnly) = (1 << 0),
15
- /// Use this option if you have reached the limit of `LSApplicationQueriesSchemes` in your Info.plist
16
- /// Attempt to open Spotify app directly without using `canOpenURL`. Falls back to ASWebAuthentication if
17
- /// opening fails.
18
- SPTSpotifySchemeNotRegisteredAuthorizationOption NS_SWIFT_NAME(spotifySchemeNotRegistered) = (1 << 1),
19
- } NS_SWIFT_NAME(AuthorizationOptions);
20
-
21
- typedef NSString *const SPTAuthorizationCode;
22
-
23
-
24
- /// This class manages a Spotify user session, in the form of `SPTSession`.
25
- @interface SPTSessionManager : NSObject
26
-
27
- /// The `SPTSession` for the `SPTSessionManager` to manage. If no user has been authenticated this will be nil
28
- @property (nullable, nonatomic, strong) SPTSession *session;
29
-
30
- /// The `SPTSessionManagerDelegate` to notify of initiating a session, renewing a session, and/or errors related to a
31
- /// session
32
- @property (nullable, nonatomic, weak) id<SPTSessionManagerDelegate> delegate;
33
-
34
- /**
35
- Determine if the Spotify app is installed.
36
-
37
- Will be `YES` if the Spotify app is installed (and the URL scheme is whitelisted), otherwise is `NO`.
38
- Note: You must whitelist the "spotify" URL scheme in your info.plist LSApplicationQueriesSchemes or this will always be
39
- NO
40
- */
41
- @property (nonatomic, readonly, getter=isSpotifyAppInstalled) BOOL spotifyAppInstalled;
42
-
43
- /**
44
- Set this value to `YES` when debugging to have the Spotify app always show the authorization confirmation screen.
45
- You SHOULD NOT set this value to `YES` in production or your users will always have to confirm.
46
- */
47
- @property (nonatomic, assign) BOOL alwaysShowAuthorizationDialog;
48
-
49
- - (instancetype)init NS_UNAVAILABLE;
50
-
51
- /**
52
- Initiate the authorization process
53
-
54
- @param scope The scope to request, e.g. `SPTPlaylistReadPrivateScope`|`SPTUserReadEmailScope` if you wish to request
55
- read access to private playlists, and read access to the user's email address.
56
- @param options Options bitmask that informs authorization behavior.
57
- @param campaign The campaign identifier, to help attribute where the account linking was initiated from.
58
- See `SPTSessionManagerDelegate` for messages regarding changes in session state.
59
- */
60
- - (void)initiateSessionWithScope:(SPTScope)scope
61
- options:(SPTAuthorizationOptions)options
62
- campaign:(nullable NSString *)campaign;
63
-
64
- /**
65
- Initiate the authorization process
66
- @note Prefer `initiateSessionWithScope:options:campaign` instead, unless you need additional scopes that aren't listed
67
- in `SPTScope`
68
- @param scope The scope to request, e.g. `"playlist-read-private user-read-email"` if you wish to request read access to
69
- private playlists, and read access to the user's email address.
70
- @param options Options bitmask that informs authorization behavior.
71
- @param campaign The campaign identifier, to help attribute where the account linking was initiated from.
72
- See `SPTSessionManagerDelegate` for messages regarding changes in session state.
73
- */
74
- - (void)initiateSessionWithRawScope:(NSString *)scope
75
- options:(SPTAuthorizationOptions)options
76
- campaign:(nullable NSString *)campaign;
77
-
78
- /// Attempt to renew the access token, using the refresh token in the current `SPTSession` which must be valid.
79
- - (void)renewSession;
80
-
81
- /**
82
- Create an `SPTSessionManager` with the provided configuration.
83
-
84
- @param configuration An `SPTConfiguration` object.
85
- @param delegate An optional delegate conforming to `SPTSessionManagerDelegate`.
86
- @return An `SPTSessionManager` with the desired configuration.
87
- */
88
- - (instancetype)initWithConfiguration:(SPTConfiguration *)configuration
89
- delegate:(nullable id<SPTSessionManagerDelegate>)delegate;
90
-
91
- + (instancetype)sessionManagerWithConfiguration:(SPTConfiguration *)configuration
92
- delegate:(nullable id<SPTSessionManagerDelegate>)delegate;
93
- /**
94
- Handle openURL callbacks from the `AppDelegate`
95
-
96
- @param application The `UIApplication` passed into the matching `AppDelegate` method
97
- @param URL The URL to attempt to parse the access token from
98
- @param options The options passed in to the matching `AppDelegate` method
99
- @return Returns `YES` if `SPTSessionManager` recognizes the URL and will attempt to parse an access token, otherwise
100
- returns `NO`.
101
- */
102
- - (BOOL)application:(UIApplication *)application
103
- openURL:(NSURL *)URL
104
- options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options;
105
-
106
- /**
107
- Handle continueUserActivity callbacks from the `AppDelegate`
108
-
109
- @param application The `UIApplication` passed into the matching `AppDelegate` method
110
- @param userActivity An object encapsulating a user activity supported by this responder.
111
- @param restorationHandler A block to execute if your app creates objects to perform the task the user was performing
112
- @return Returns `YES` if `SPTSessionManager` recognizes the URL and will attempt to parse an access token, otherwise
113
- returns `NO`.
114
- */
115
- - (BOOL)application:(UIApplication *)application
116
- continueUserActivity:(NSUserActivity *)userActivity
117
- restorationHandler:
118
- (void (^)(NSArray<id<UIUserActivityRestoring>> *__nullable restorableObjects))restorationHandler;
119
-
120
- @end
121
-
122
- /// The `SPTSessionManagerDelegate` to use for monitoring state changes of a `SPTSessionManager`
123
- @protocol SPTSessionManagerDelegate <NSObject>
124
-
125
- /**
126
- This message is sent when a session has been initiated successfully.
127
-
128
- @param manager The `SPTSessionManager` that initiated the session.
129
- @param session The initiated `SPTSession` object.
130
- */
131
- - (void)sessionManager:(SPTSessionManager *)manager
132
- didInitiateSession:(SPTSession *)session NS_SWIFT_NAME(sessionManager(manager:didInitiate:));
133
-
134
- /**
135
- This message is sent when the manager failed to initiate or renew a session.
136
-
137
- @param manager The `SPTSessionManager` instance.
138
- @param error The `NSError` that occured.
139
- */
140
- - (void)sessionManager:(SPTSessionManager *)manager
141
- didFailWithError:(NSError *)error NS_SWIFT_NAME(sessionManager(manager:didFailWith:));
142
-
143
- @optional
144
-
145
- /**
146
- This message is sent when the manager has renewed a session.
147
-
148
- @param manager The `SPTSessionManager` instance.
149
- @param session The renewed `SPTSession` object.
150
- */
151
- - (void)sessionManager:(SPTSessionManager *)manager
152
- didRenewSession:(SPTSession *)session NS_SWIFT_NAME(sessionManager(manager:didRenew:));
153
-
154
- /**
155
- Sent when the `SPTSessionManager` has obtained an authorization code,
156
- and is about to swap it for an access token. If you wish to handle this
157
- yourself, return `NO` and use the provided authorization code.
158
-
159
- @param manager The `SPTSessionManager` instance.
160
- @param code An OAuth authorization code.
161
- @return `NO` to request the access token yourself; `YES` to let `SPTSessionManager` handle it.
162
- */
163
- - (BOOL)sessionManager:(SPTSessionManager *)manager
164
- shouldRequestAccessTokenWithAuthorizationCode:(SPTAuthorizationCode)code
165
- NS_SWIFT_NAME(sessionManager(manager:shouldRequestAccessTokenWith:));
166
-
167
- @end
168
-
169
-
170
- NS_ASSUME_NONNULL_END
@@ -1,28 +0,0 @@
1
- #import <Foundation/Foundation.h>
2
-
3
- #ifndef _SPOTIFYAPPREMOTE_
4
- #define _SPOTIFYAPPREMOTE_
5
-
6
- #import "SPTAppRemote.h"
7
- #import "SPTAppRemoteAlbum.h"
8
- #import "SPTAppRemoteArtist.h"
9
- #import "SPTAppRemoteCommon.h"
10
- #import "SPTAppRemoteConnectionParams.h"
11
- #import "SPTAppRemoteConnectivityAPI.h"
12
- #import "SPTAppRemoteConnectivityState.h"
13
- #import "SPTAppRemoteContentAPI.h"
14
- #import "SPTAppRemoteContentItem.h"
15
- #import "SPTAppRemoteCrossfadeState.h"
16
- #import "SPTAppRemoteImageAPI.h"
17
- #import "SPTAppRemoteLibraryState.h"
18
- #import "SPTAppRemotePlaybackOptions.h"
19
- #import "SPTAppRemotePlaybackRestrictions.h"
20
- #import "SPTAppRemotePlayerAPI.h"
21
- #import "SPTAppRemotePlayerState.h"
22
- #import "SPTAppRemotePodcastPlaybackSpeed.h"
23
- #import "SPTAppRemoteTrack.h"
24
- #import "SPTAppRemoteUserAPI.h"
25
- #import "SPTAppRemoteUserCapabilities.h"
26
- #import "SPTConfiguration.h"
27
-
28
- #endif /* _SPOTIFYAPPREMOTE_ */
@@ -1,7 +0,0 @@
1
- #ifndef _SPOTIFYIOS_
2
- #define _SPOTIFYIOS_
3
-
4
- #import "SPTLogin.h"
5
- #import "SpotifyAppRemote.h"
6
-
7
- #endif /* _SPOTIFYIOS_ */
@@ -1,5 +0,0 @@
1
- framework module SpotifyiOS {
2
- umbrella header "SpotifyiOS.h"
3
- export *
4
- module * { export * }
5
- }
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>NSPrivacyCollectedDataTypes</key>
6
- <array/>
7
- <key>NSPrivacyAccessedAPITypes</key>
8
- <array/>
9
- <key>NSPrivacyTrackingDomains</key>
10
- <array/>
11
- <key>NSPrivacyTracking</key>
12
- <false/>
13
- </dict>
14
- </plist>