September 10, 2011
At long last (big sigh of relief here by me) QuickConnectFamily 2.1 is finally available for download. It involved a lot of work by many people and has come together well. There are some big changes for both the iOS and Android platforms. These enhancements and changes have been driven by requests from developers like you.
- Another BIG one. In order to make the Control Function code more readable and more easily comprehended for those new to the framework all Control Functions MUST return one of the following three values (see the documentation for more information):
- qc.STACK_CONTINUE – This instructs the framework to execute the next control function in the stack.
- qc.STACK_EXIT – This instructs the framework to terminate all further stack execution.
- qc.WAIT_FOR_DATA – This instructs the framework that a call to database or remote data has been made or a call to device specific behavior such as showing a map, displaying the camera, email editor or other native behaviors.
- Work has been done to improve the asynchronous call stability in the underlying framework. (Thank you to the team at affinityAmp).
- Miscellaneous bug fixes and enhancements.
- Bug fixes
- Expanded database support and fixes
- A major rework of the underlying Android Java code to make it match the design changes in iOS. This is in preparation for QC Plugins and some new features such as ‘window-in-window’ that will be part of the next release as a Plugin. The ‘window-in-window’ code is in there now but not official until it is converted to a plugin and the same behavior is available for iOS.
- Added a hybrid sqlite database example
- Bug fixes
- Removed the native footer code since libraries for scrolling and others such as Sencha, JQTouch, etc. are now of good quality.
- QC Family Hybrid Plugin API and design spec completed. There is an example of how you can add to QC on your own. If you thing these additions could be useful to others you are free to charge for them, or not, host them yourself, notify me and I will add them to the plugin list on the QC plugin site. If you are willing to donate them to the QC community send them to me for review and I will put them into the git repository and list them on the QC plugin site.
- Updated all the examples to use the new return values and the new qc name space.
August 16, 2011
The download now includes a SimpleDB example for both Android and iOS. The example inserts values into the database, queries values from the database, and can do an HTTP GET. The iOS database interactions show how to use CoreData. I will soon (by the end of the month??) have an example using the Android ORM I’m developing.
Still working on that QC Hybrid release. It is getting really close. More on that later.
December 30, 2010
All User Interface libraries, regardless of platform, require that the UI components start their updates from the ‘main’ thread. Sometimes this is referred to as the UI thread but it is actually the main thread of the application.
What most people that are creating mobile apps don’t realize is that if they are using the main thread to do significant computation such as remote server access, XML parsing, database access, number crunching, etc. is that this makes their User Interface slow and chunky. The ywill notice the unresponsiveness of their UI but will not know why it isn’t smooth. They generally tend to come to believe that the problem is that the processors are not fast enough to do what they want to do. This is generally not the case.
What they really need to do is move the computational portions of their apps into background (worker) threads and let the UI thread remain responsive to the user. This can be a challenge that they are unwilling to attempt due to the perceived difficulty of implementing threading.
Starting with QuickConnect 1.6.5 I have made the native iOS and Android application templates pre-threaded for both iOS and Android apps. This means that you, as a developer, no longer need to worry about creating the background threads and then executing UI updates on the main thread for your mobile apps.
When you use one of the mobile native templates in QC all of your validation and computation code is automatically executed on a background thread. When this portion of your application is complete and you make a UI update the framework automatically causes your update to use the main thread. You won’t even be aware of the change.
All of this is triggered every time you use the QC framework handleRequest method. This is in addition to linearizing your asynchronous HTTP remote access calls and an easy to use SQLite wrapper. With this kind of a head start it becomes much easier for you to create highly responsive, high quality apps in a much shorter time.
I will soon be making this multi-threading available to all of you using the hybrid iOS and Android templates as well. It should make a huge difference in your execution speeds.
August 22, 2010
I am uploading to sourceForge the latest version of QuickConnect right now.
This new version of QC is a maintenance version and has two fixes in it.
The first is a fix to the display of iAdds. Previously the iAdd seemed to disappear but was still taking up screen space and masking the area it was covering.
The second fix regarded a crash when using native databases with null values in fields.
Both of these defects have been fixed.
April 26, 2010
I have been invited to teach three 75 minute courses at the upcoming iPhone/iPad DevCon in San Diego September 28th and 29th, 2010. Two of the courses are on Objective-C topics and one is on using QuickConnect to build hybrid applications.
I’d love to meet you there if you get the chance. Maybe we could setup a users group meeting. I have put up a survey here on the blog as to what you think would be the most helpful items to cover in the ‘using QC’ class.
After the survey you can see a description of each of the classes I’ll be teaching.
Advanced track “Mobile Data Synchronization with Any Database”
iPhone applications can easily store data using either the core Data framework or by directly interacting with the SQLite database engine. This data can then be heavily used without delays involved in passing information back-and-forth between the device and a remote database. How then can data be kept in sync if it needs to exist on the device and a remote database? What if you don’t need all of the data found in the database to exist on the device?
This class helps you design and implement a synchronization utility that will work with the database management system of your choice. It could be Oracle, MySQL, Sybase, or some other database. It could even be something completely different such as XML or other textual flat files. The data structure on the device won’t even need to match the remote data structure.
All of this can be done to create an easy to use sync utility you can use in any of your applications.
Intermediate track “Creating an Easy-To-Use Objective-C Modular Framework”
The Model-View-Control pattern as implemented by apple is great as far as it goes. It does tend to lead to implementation code being scattered across many areas of your application.
This class helps you design and implement a modular, reusable framework that can speed up your application development dramatically. Initial data indicates you could reduce your time to market by a factor or 10 or more by reusing the framework you will create in this class.
You will create a command-response, highly modular framework that you can reuse in every iPhone, iPad, and even Mac application you ever create. Your framework will be fast. It will be small. It will be easy to use.
Beginning track “Ship Your App Now by Creating Hybrid Applications”
This class helps you create your hybrid application using the first, open source, free, and most highly developed hybrid application framework QuickConnect. A few of the ideas you will learn to implement are:
- Storing data on the device
- Using HTML 5 to animate your interface
- Displaying Maps in your application
- Using audio and Video
January 26, 2010
We are getting closer to build once and launch all all platforms! The Android template is much more functional now and prepares the way.
This beta 11 of QCFamily 1.6 has some important features
- Enterprise Sync supports synchronization with all remote databases.
- Stabilization of the iPhone enterprise synchronization for native and in-browser databases
- Enterprise synchronization is now available for Android devices. Unfortunately Google is not supporting in-browser HTML 5 databases at this time. This means that if you want to use this feature you will need to use a native database (include a .sqlite file)
- Google doesn’t support the XMLHttpRequest object in their WebView class. Therefore I have written a simple replacement. It is not fully featured but works in support of the Enterprise data sync ability.
- The QC Android template now includes the ability to build and run on a connected Android device in addition to the build for release and build for simulator functionality it already had.
Target features for the next beta:
- iPhone in-app purchase
- Enterprise data sync for Palm WebOS
- First Blackberry template
- Enterprise data sync for Blackberry
- One click build and run on all platforms
October 31, 2009
QCiPhone 1.6 beta 3 includes:
- All new Xcode apps created using the 1.6 beta 2 or later Xcode template will auto-update to a new version of QCiPhone when you run the QCFamily installer
- A fix for the permission build error in beta 2
- In application maps. This feature allows you to drop any number of pins as well as show the current location of the device.
- A new object, DBScript, that allows you to do bulk updates to the SQLite database in a transactionally safe fashion (in-browser only for now. Will work for native databases in the next beta.
Examples for both the in-app maps (MapExample) and DBScript (BrowserDBScript) exist in the iPhone Examples directory of the download.
The post just previous to this one shows how to use the DBScript object.
I just added SQLite bulk updates for in-browser databases (native databases coming soon) to the QuickConnect iPhone framework (1.6 beta 3). I did this by creating and adding to the framework an object called DBScript. It is transactionally safe. If one of your updates in the script fails all changes are rolled back.
It is also easy to use. The code below comes from the databaseDefinition.js file of the new BrowserDBScript dashcode example. In it a link to the database is established using the DataAccessObject. Then the DBScript object is created and a series of SQL statements are added to the script. Lastly, the script is executed. Notice that the script object works for both standard and prepared statements.
If you are using this after a data pull from a network resource or after querying the user for information to insert, make sure you use a prepared statement type call to avoid SQL insertion attacks.
* An example of how to use the DBScript object to populate a database.
* This will be done as a single transaction and is transactionally safe.
* This means that all changes will be rolled back if any
* database error happens.
//create or connect to the in-UIWebView database
var database = new DataAccessObject(“WelcomeExample”, “1.0″, “Welcome example”, 20);
//create the script object
var bulkInsertScript = new DBScript(database);
//add all statements to the script object
bulkInsertScript.addStatement(“CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE, name TEXT)”);
bulkInsertScript.addStatement(“INSERT INTO names VALUES(1,’Bob’)”);
bulkInsertScript.addStatement(“INSERT INTO names VALUES(2,’Sue’)”);
//and example of using a prepared statement
bulkInsertScript.addStatement(“INSERT INTO names VALUES(?,?)”,[3,"Jose"]);
bulkInsertScript.addStatement(“INSERT INTO names VALUES(4,’Bjorn’)”);
bulkInsertScript.addStatement(“INSERT INTO names VALUES(5,’Jean’)”);
bulkInsertScript.addStatement(“INSERT INTO names VALUES(6,’Gustav’)”);
//execute all statements within a transaction
April 15, 2009
Beta 6 includes:
- Fixes for special characters in native database files(See nativeDBAccess example)
- Fixed multiple geolocation request defect
- Added horizontal accuracy to the geolocation data (See DeviceCatalog example)
Still to do:
- Fix two of the examples that have links in them instead of files.
- ??? Requests???
March 29, 2009
If there are no more major defects this will be come release candidate one.