Discussion Forums  >  Uncategorized

Replies: 9    Views: 265

tonycelestino
Aspiring developer
Profile
Posts: 213
Reg: Jun 24, 2011
Maceio
4,080
11/12/11 03:22 PM (14 years ago)

Ideas of plugins for BT Server

I know it might be soon to be talking about this but there so many exciting possibilities with this. I wanted to make a forum thread about ideas that would make a good plugin for BT Server. **** Lets try to make this thread useful for future development. **** My suggestion is that if you think of some useful plugin/functionality that could be made for BT Server you follow this guide before posting: 1 - Search the forum to see if it isn't already proposed, solved or being developed by the BT team or the other forum users; 2 - Search the web (remember, Google is your friend!) to see if there is any open-source or service that provides useful information for this project; 3 - Try not to be too vague about the idea: Better image gallery, Social Sharing or Geo Location are not enough; PS: BT guys, in the future forum this could be a category so people could discuss about plugins, projects and ideas.
 
tonycelestino
Aspiring developer
Profile
Posts: 213
Reg: Jun 24, 2011
Maceio
4,080
like
11/12/11 03:32 PM (14 years ago)
Ok I'll go first: Idea: Social Sharing. Like I said I think we need a social sharing plugin for BT Server, specially if you are using rss feeds to bring news for your app. That can be easily achieved trough Web View but I'm talking about native functionality so the user could share pretty much anything on the app. Searching the web I have found two services that could probably be used to build this plugin: 1 - AddThis (http://www.addthis.com/help/ios-quickstart) has a great iOS SDK and documentation on how to integrate their service inside a regular iPhone App. I'm not sure what would take to integrate it on a BT app but I think we should try implementing it as a plugin for BT Server. 2 - Janrain Engage (http://www.janrain.com/products/engage/mobile) is a great service, I have talked about it here on the forum before but now with plugin support for BT Server I think it will be easier to use this. They also have a social Login solution, so if your app needs some login functionality that could be a great tool. Lets keep an eye on this one. Now its your turn...
 
theGreek
Aspiring developer
Profile
Posts: 648
Reg: May 25, 2011
Schaumburg, IL
7,830
like
11/12/11 06:04 PM (14 years ago)
One question I would have is..... Does Apple or Android allow these types of plugins built into applications? They going to approve this? I don't know juswt questioning it since these companies may be collecting data along the way...
 
ThomasB
Lost but trying
Profile
Posts: 162
Reg: Jun 23, 2011
Palo Alto
3,270
like
11/12/11 06:52 PM (14 years ago)
1. Push notification. 2. Yes agree on social sharing -- Janrain. But add gamification funtions also as a seperate plugin. This allows you to award points, track point scores for multiple point types, award levels and badges. Somebody was working with the Bigdoor API which provides all this. Native integration from a backend database/engine like Bigdoor would be amazing. 3. Data entry screens/forms, connecting to back end dbfs like Oracle, Salesforce.com. This might be better done with existing forms vendors, not as Native functionality. Would have to see about it.
 
David @ buzztouch
buzztouch Evangelist
Profile
Posts: 6866
Reg: Jan 01, 2010
Monterey, CA
78,840
like
11/13/11 12:23 AM (14 years ago)
Cool post. About push notification first. Consider this...push notifcations are more an app-thing than a plugin thing. The idea behind a plugin is that it's related to adding a certain type of screen. Each plugin represents a new screen-type. Push Notifications are a 'core' feature that we've already begun working out for the self-hosted platform. And, keep in mind, that we are moving towards the 'same experience' wheter it's self-hosted or not. This means push-n will be available in the hosted version eventually. Back to plugins... Data collection is a huge one. One of the important concepts about plugins is that they are relativly easy to make because the follow a development pattern. Example: Right now there is a short list. But, take the splash-view plugin. To make an entirely new plugin based off that code, with say a different type of splash (like an image + some text + something else) it's a matter of copying the entire directory, renaming the view controllers, then updating the config + readme. For sure some docs on this needed but just know that the goal is easy to copy, easy to extend. Apple / Android 'approval': One of the core differences about buzztouch is that all the code is native code, not another layer of a different language (not a translater) that slows things down. What Apple / Android wants is native code because additional layers (like say a javascript layer that claims to magicaly translate javascript into Objective C) generally doesn't work. It slows down the device and diminishes performance. Plugins and code nees to be native - period (in our opinion). So, each plugin is a native UIViewController or a native Android Activity. The JSON configuration data for that plugin changes it's behavior but only in style, design, feature differences...not in performance. I could talk forever about these differences... Sharing: This goes with the idea of this post...imagine a discovery area to find plugins created by others that you can just use. Sure you'll need to tweak things sometimes but again the idea is a common set of development principles, not an entirely new language. Exciting things are coming and we're hell-bent on making this easier and more reliable and removing lots and lots of confusion. Core App + Plugins = good performance and maximum flexibility.
 
tonycelestino
Aspiring developer
Profile
Posts: 213
Reg: Jun 24, 2011
Maceio
4,080
like
11/13/11 05:17 AM (14 years ago)
That makes a lot of things clear, lets see if I understood... So I could make a copy of the splash screen and try to make an animated splash screen (like the one on JetSetter, a sort slideshow of images). Or I could try to copy the menu list screen and make a menu list with a web view on top. Im not saying those things are possible, im just trying to illustrate the concept. Is that right?
 
LostBalloon
Veteran developer
Profile
Posts: 2
Reg: Nov 12, 2011
Montreal
20
like
11/13/11 01:58 PM (14 years ago)
Is there any place I can find a template on which i can base myself to make custom plugins, or are there already any plugins available, if so, where?
 
David @ buzztouch
buzztouch Evangelist
Profile
Posts: 6866
Reg: Jan 01, 2010
Monterey, CA
78,840
like
11/14/11 01:01 AM (14 years ago)
No docs yet but try this: a) Download one of the plugin packages from us (one of the .zips). Start with a super-simple one like the Splash. b) Unzip the thing and RENAME the folder to mySplash or whatever you want. c) Spend :10 minutes or so looking at the config.txt file. This is key to the whole thing. Most of it is obivous..your name, contact info, etc. A few parts at the top are not. You'll need to change a few things here to make this a totally new plugin. uniquePluginId: Set this so something unique among all your plugins. Best to keep it short and start it with your iniitals or something, like LB_splash displayAs: The label in the control panel: Best to keep this short too. category: When adding screens to an app the drop down list devides into categories. Your choices are: Screen, Action, Menu, Settings, Splash loadClassOrActionName: This is tricky...this is the objective-c or java class file name we'll discuss in a moment. Use mySplash hasChildItems; No. Leave at no. Not important for this topic...just know that some plugins have child items, some dont. updateURL: Load the url you see in your browser to see what this is. The is the URL the control panel hits when you click 'check for updates' on the plugins admin screen. It just outupts the most recent version. If you leave this out of your plugin you wont' see the check for updates button. downloadURL: Self explanatory. If you're going share this plugin folks will need to know where to get the latest version. The download URL delivers the .zip holding all the plugins files. defaulJSONData: Leave this alone until you know what it does. It's the default values that are used when you add a new screen to your app. At minimum it needs to be valid json, even if it's empty like {} Just leave this alone in this case until you get further along. So, the config.txt file updated. Next, update the readme.txt file and the icon. The icon is a 50x50 graphic that shows in your control panel. You can use the same one if you want but it's much cooler to make a unique icon for your own custom plugin. Readme.txt, self explanatory...just explains how the thing works. Type some info into this document that will show in your control panel. Now the fun part and a few more things to undrestand: Most importantly, your objective-c and android class files need to be re-named. You need to rename the files themselves and the class name in the file. In this case, you rename the files mySplash.h, mySplash.m in the source-ios folder and mySplash.java in the source-android folder. Next, open these files with a text editor and replace all the occurances of BT_screen_splash with mySplash. When you've done you'll have your own class files that act exactly like the original but with a new name so they don't conflict wither existing class files (not two classes can have the same names in iOS or Android or any language for that matter). Next, re-zip the package. Upload the archive to your control panel and you'lll see the plugin available for use. At this point it's exactly like the original plugin but that was the whole idea. Now you can tweak, change modify all you want. Something else to keep in mind. Not all plugins will require dynamic adjustments in the contorl panel. The /index.php page in the package is the file is used to manage the plugin's details when used in an app. When you add a screen to an app, then click the screen to modify it's properties it's the index.php file in your plugin folder that loads. This means you can make this page do / say /behave however you need. Final tip: The control panel assumes you'll be using the admin > plugins page to upload plugin packages. You don't have to do it this way. If you're going to develop your own and being copying / tweaking / devloping you may be better served NOT using the control panel to manage the plugin folders. I say this becauase PHP takes ownership and makes FTP access a major pain. I like FTP so I can easily change my plugins without having to constantly re-package, re-upload in the control panel, then start again. Gets super-slow when making constant changes and developing new plugins. You can just....blow-out the plugins folder on your server (not locally, but on your website). Next, use FTP to upload the plugins. IN this case your NOT uploading zips, your uploading the actual folders and all their content. When you uppload one or change one, use the 'Refresh plugins link' in the contorl panel to re-read them all and update your database. I hope this makes sense. The key to this is your EITHER using FTP to upload the plugins OR the control panel, not both. But, in either case, you'll need to use the Refresh plugins link to refresh your database after you upload a new package. You can't use both because PHP will have trouble understanding who 'owns' the plugin if they have been FTP'd. The whole idea is you can copy any plugin, rename it, update the config. txt and class files and icon, then re-fresh the panel and your new plugins will show up.
 
ThomasB
Lost but trying
Profile
Posts: 162
Reg: Jun 23, 2011
Palo Alto
3,270
like
11/14/11 10:06 AM (14 years ago)
David, LOL. Wayyy cool.
 
ThomasB
Lost but trying
Profile
Posts: 162
Reg: Jun 23, 2011
Palo Alto
3,270
like
11/28/11 12:00 AM (14 years ago)
Here is another plugin suggestion....a modified Menu/screen structure that makes better use of the screen space for iPad (and potentially Android tablets). The current graphic/button/menulist structure is just fine for iPhones but for iPads it looks clunky. The standard I see in iPads is a menu running down the left hand side of the screen with the content pane on the right side. When you touch a menu option, the new content pane displays but the menu is anchored on left margin. If we want to take BT farther in the enterprise apps, which is my own focus, then this would I think be a fundemental building block. How could this be done cleverly using the existing config.txt /child items JSON file structure (which is now so deighfully flexible and robust!) -- hmmm...fun problem to solve. My 2 cents.
 

Login + Screen Name Required to Post

pointerLogin to participate so you can start earning points. Once you're logged in (and have a screen name entered in your profile), you can subscribe to topics, follow users, and start learning how to make apps like the pros.