capacitor-chromecast
v8.0.0
Published
Open the native Google Cast device picker from Capacitor
Maintainers
Readme
capacitor-chromecast
A Capacitor plugin that opens Google Cast / Chromecast native picker from JavaScript or TypeScript.
Compatibility
| Plugin version | Capacitor compatibility | Maintained | | -------------- | ----------------------- | ---------- | | v8.*.* | v8.*.* | ✅ |
Install
npm install capacitor-chromecast
npx cap syncInitialization
You must provide your Google Cast receiver application ID either in JavaScript or in Capacitor config.
JavaScript initialization
import { Chromecast } from 'capacitor-chromecast';
await Chromecast.initialize({
receiverApplicationId: 'YOUR_RECEIVER_APPLICATION_ID',
});Capacitor config initialization
You can either modify your capacitor.config.ts file
import { CapacitorConfig } from '@capacitor/cli';
export default CapacitorConfig({
plugins: {
Chromecast: {
receiverApplicationId: 'YOUR_RECEIVER_APPLICATION_ID',
},
},
});or your capacitor.config.json file
{
...
plugins: {
Chromecast: {
receiverApplicationId: "YOUR_RECEIVER_APPLICATION_ID",
},
}
}The receiver application ID must be an 8-character hexadecimal Google Cast application ID.
Basic usage
import { Chromecast } from 'capacitor-chromecast';
await Chromecast.initialize({
receiverApplicationId: 'YOUR_RECEIVER_APPLICATION_ID',
});
await Chromecast.show();iOS setup
Google Cast discovery on iOS requires local-network and Bonjour declarations in the consuming app's Info.plist.
Add:
<key>NSLocalNetworkUsageDescription</key>
<string>This app uses Google Cast to discover and connect to nearby devices.</string>
<key>NSBonjourServices</key>
<array>
<string>_googlecast._tcp</string>
<string>_YOUR_RECEIVER_APPLICATION_ID._googlecast._tcp</string>
</array>If you use the full Bluetooth-enabled Google Cast SDK in your app setup, Google may also require Bluetooth-related usage descriptions. Review the latest Google Cast iOS setup guidance for your chosen SDK distribution.
API
initialize(...)show()addListener('sessionStateChanged', ...)removeAllListeners()- Interfaces
- Type Aliases
initialize(...)
initialize(options: InitializeOptions) => Promise<void>Initializes the native Google Cast SDK with your receiver application ID.
Call this once during application startup, or configure the same value in
capacitor.config.* under plugins.Chromecast.receiverApplicationId.
| Param | Type |
| ------------- | --------------------------------------------------------------- |
| options | InitializeOptions |
show()
show() => Promise<void>Opens the official native Google Cast device picker.
addListener('sessionStateChanged', ...)
addListener(eventName: 'sessionStateChanged', listenerFunc: (event: SessionStateChangedEvent) => void) => Promise<PluginListenerHandle>| Param | Type |
| ------------------ | ------------------------------------------------------------------------------------------------- |
| eventName | 'sessionStateChanged' |
| listenerFunc | (event: SessionStateChangedEvent) => void |
Returns: Promise<PluginListenerHandle>
removeAllListeners()
removeAllListeners() => Promise<void>Interfaces
InitializeOptions
| Prop | Type | Description |
| --------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| receiverApplicationId | string | Google Cast receiver application ID from the Google Cast Developer Console. This must be an 8-character hexadecimal application ID such as CC1AD845. |
PluginListenerHandle
| Prop | Type |
| ------------ | ----------------------------------------- |
| remove | () => Promise<void> |
SessionStateChangedEvent
| Prop | Type |
| ----------- | ----------------------------------------------------- |
| state | SessionState |
Type Aliases
SessionState
'connecting' | 'connected' | 'disconnected'
Future media-casting capabilities
The repository is structured so future Cast functionality can be added without breaking the simple show() API. Likely follow-up APIs include:
isConnected()getSession()disconnect()loadMedia()play()pause()stop()seek()setVolume()getMediaStatus()
