bgs-core icon indicating copy to clipboard operation
bgs-core copied to clipboard

Phonegap Build access

Open neogeo987 opened this issue 11 years ago • 15 comments

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?

neogeo987 avatar Feb 04 '14 10:02 neogeo987

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

Red-Folder avatar Feb 04 '14 12:02 Red-Folder

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'"

neogeo987 avatar Feb 04 '14 12:02 neogeo987

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.

Red-Folder avatar Feb 04 '14 13:02 Red-Folder

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.

neogeo987 avatar Feb 04 '14 13:02 neogeo987

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

Red-Folder avatar Feb 04 '14 13:02 Red-Folder

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?

neogeo987 avatar Feb 04 '14 13:02 neogeo987

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

Red-Folder avatar Feb 04 '14 13:02 Red-Folder

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

neogeo987 avatar Feb 04 '14 14:02 neogeo987

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

2014-02-04 neogeo987 [email protected]:

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

teusink avatar Feb 04 '14 16:02 teusink

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

Red-Folder avatar Feb 04 '14 21:02 Red-Folder

Did you ever try this on Build?

Red-Folder avatar Feb 24 '14 20:02 Red-Folder

Changed to enhancement. Needs to be tested on Build

Red-Folder avatar Oct 28 '14 16:10 Red-Folder

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

danielzzz avatar Feb 16 '15 00:02 danielzzz

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

  • Started with the basic app created from Phonegap CLI , but only used the www folder (other files and folders are removed, except for config.xml were moved inside the www folder)
  • Downloaded the MyService sample, copied myService.html and myService.js (not sure how js is called within the html file, it's not listed there) and pasted it in the www folder created above.
  • Updated config.xml to use myService.html as the value for <content>.
  • Also in config.xml, I added this line: <plugin name="git" spec="https://github.com/Red-Folder/bgs-sample.git" />
  • Compiled into zip, then upload to PGB.

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!

lionlancer avatar Mar 11 '18 19:03 lionlancer

@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

Red-Folder avatar Mar 19 '18 17:03 Red-Folder