
Cordova plugin for Feed.FM FeedMedia native SDK
By: Timothy Shamilov
Includes IOS Feed.fm SDK version 4.3.10 and the Feed Gradle package 5.3.5
Objective-C & Java
Usage
Prerequisites
- Cordova-iOS 3.x.x or higher
- Cordova-Android x.x.x
Using the plugin
initialize the plugin and handle all future state with a switch statement.
plugin will respond with the appropriate msg.type
and msg.payload
when native state changes.
CordovaPluginFeedFm.initializeWithToken(
successCallback,
errorCallback,
token,
secret,
enableBackgroundMusic
);
{type: "NAME_OF_STATE_OR_EVENT", payload:{...}}
Full example of every state that initialize will respond with:
CordovaPluginFeedFm.initializeWithToken(
function(msg) {
switch (msg.type) {
case "REQUESTING_SKIP":
console.log(msg.payload);
break;
case "PLAYBACK_STARTED":
console.log(msg.payload);
break;
case "NEW_CLIENT_ID":
console.log(msg.payload);
break;
case "SET_ACTIVE_STATION_SUCCESS":
console.log(msg.payload);
break;
case "SET_ACTIVE_STATION_FAIL":
console.log(msg.payload);
break;
case "SKIP_FAIL":
console.log(msg.payload);
break;
case "INITIALIZE":
console.log(msg.payload);
break;
case "WAITING_FOR_ITEM":
console.log(msg.payload);
break;
case "READY_TO_PLAY":
console.log(msg.payload);
break;
case "PLAYING":
console.log(msg.payload);
break;
case "STALLED":
console.log(msg.payload);
break;
case "COMPLETE":
console.log(msg.payload);
break;
case "UNKNOWN":
console.log(msg.payload);
break;
case "OFFLINE_ONLY":
console.log(msg.payload);
break;
case "UNINITIALIZED":
console.log(msg.payload);
break;
case "UNAVAILABLE":
console.log(msg.payload);
break;
case "STATION_CHANGE":
console.log(msg.payload);
break;
case "READY_TO_PLAY":
console.log(msg.payload);
break;
case "PAUSED":
console.log(msg.payload);
break;
default:
break;
}
},
function(err) {},
"token",
"secret",
false
);
set active station
CordovaPluginFeedFm.setActiveStation(12345);
play
CordovaPluginFeedFm.play();
pause
CordovaPluginFeedFm.pause();
skip
CordovaPluginFeedFm.skip();
stop
CordovaPluginFeedFm.stop();
createNewClientID:
CordovaPluginFeedFm.createNewClientID();
setVolume
CordovaPluginFeedFm.setVolume(5);
setClientId
CordovaPluginFeedFm.setClientId(12345);
requestClientId
CordovaPluginFeedFm.requestClientId(
function(msg) {
console.log(msg.payload);
},
function(error) {}
);
Contributing to this plugin
The dev environment used for this project was macOS. Instructions for any other OS aren't provided and will be unreliable.
You will need the following global dependencies:
Directory Structure
Key files
.
├── example
│ ├── www
| ├── package.json
|
├── src
├── www
├── plugin.xml
├── package.json
Setting up local env
cd example
cordova platform add platformname
cordova emulate platformname
Key Commands
cordova prepare
in /example/ this compiles non-native assets (html/css/js)cordova plugin rm cordova-plugin-feed-fm && cordova plugin add cordova-plugin-feed-fm --searchpath=../ --noregistry
in /example/ to reinstall plugin, useful for js interface changes
Troubleshooting
Experiencing bug:
- "D8: Program type already present: android.support.v4.media.MediaBrowserCompat$ConnectionCallback$StubApi21"
- Solution:
cordova plugin add cordova-plugin-androidx && cordova plugin add cordova-plugin-androidx-adapter