Red-Folder / bgs-core

Core code for the Cordova Background Service
Other
236 stars 104 forks source link

Phonegap Build access #1

Open neogeo987 opened 10 years ago

neogeo987 commented 10 years ago

First of all thanks for the awesome plugin. As you can see there are other developers who would really love to have a background service plugin for Phonegap Build. Will it not be possible to add this plugin as a plugin to phonegap build?

Red-Folder commented 10 years ago

I believe it will work with Build - but I've not tried it. Have a go and see if it works.

I'd be interested in any feedback

neogeo987 commented 10 years ago

Thanks for the feedback! When I tried adding it, it gave this error: "The license of the plugin must be 'MIT' or 'Apache 2.0'"

Red-Folder commented 10 years ago

Ok. I think I need to amend the Plugin.xml licence node. Currently it reads "Apache 2.0 License"

I'm unable to make the change at the moment (maybe tonight).

If you want to try before then, fork the repository - make the change on your fork then try with build. If it works, then issue a pull request and I'll merge the change back in.

neogeo987 commented 10 years ago

I'll let you handle the code for now. I'm tied up in the app functionality that requires this plugin at the moment, so rather let you work on it when you get to it.

Red-Folder commented 10 years ago

Fair enough.

You are aware that this plugin is intended to be extended? The plugin by it's own does nothing. It requires a developer to add their own functionality on top of it

neogeo987 commented 10 years ago

Yes, you mention it in the readme. So will this plugin be usable to a phonegap build user then? Or not? Adding javascript for functionality when using phonegap build is easy, but you can't add .java files and such. I think even something like your MyService example will fill a void for phonegap build developers, because it will keep the app alive when minimized, which is the challenge. There just is no such plugin for android, but a couple for iOS. So if a phonegap build dev can just add your MyService (mock) plugin, then that will help them by keeping it alive.

Or am I misunderstanding something?

Red-Folder commented 10 years ago

No my plugin won't keep the app alive.

The idea is that the plugin provides the scaffolding for a developer to write java logic which is performed as a background service.

Under Android, background services run in a separate process to the app and have a completely different life-cycle. The background service, once started, basically will continue to run until such point as it is killed off (user request or Android because it is too resource hungry). An app will run all the time it is visible on the screen - so turn of the screen or open another app then your app will likely be paused/ closed.

So a couple of constraints in using the plugin ...

1) Logic needs to be in Java 2) Cannot call back to the HTML/ JavaScript front-end if the app has been closed by Android 3) Cannot interact directly with the screen (unless the HTML/ JavaScript front-end is open). You have to use notifications or force your app to reopen (dependent on user requirements.

There is nothing stopping you (or someone else) from creating a plugin which extends onto mine - which can then be used in build.

This might all make more sense once we get the plugin to work in build

neogeo987 commented 10 years ago

So it's specifically interaction with the screen that keeps android apps alive?

teusink commented 10 years ago

Indeed, if you are talking about the interface (UI Thread). And Javascript is even more strict for that matter.

2014-02-04 neogeo987 notifications@github.com:

So it's specifically interaction with the screen that keeps android apps alive?

Reply to this email directly or view it on GitHubhttps://github.com/Red-Folder/bgs-core/issues/1#issuecomment-34066704 .

www.teusink.org

Red-Folder commented 10 years ago

I've updated the Licence. I'd be interested if Build is happier with it

Red-Folder commented 10 years ago

Did you ever try this on Build?

Red-Folder commented 10 years ago

Changed to enhancement. Needs to be tested on Build

danielzzz commented 9 years ago

It would be great if this plugin on build included your sample service - this way it could be extended from js. thx

lionlancer commented 6 years ago

I am commenting here just to let you all know that MyService sample is working on Phonegap Build. Here's what I did:

The status for 'Service', 'Timer' and 'Boot' remains 'Running', 'Enabled', and 'Registered' respectively after I close the app, restart the phone and reopens the app. But 'Listen' is back to 'Unregistered'.

The sample app works but how are we going to include the Java file within the app with the directory structured for Phonegap Build? Can we use config.xml via <config-file> element (to update AndroidManifest.xml) and point it to our own Java file? If so, how?

Thanks a lot for this wonderful plugin. Your efforts is very much appreciated!

Red-Folder commented 6 years ago

@lionlancer Normally I would expect you to include the relevant files in your project. The MyService example is just an example - I'd expect you to create your own .html & .js which implements the service you want to create. This you would include in you normal source