Tag Archives: lifecycle

Ten Tips For Building Professional Multi Platform Enterprise Apps With Firemonkey

Delphi XE8 Firemonkey Android IOS OSX Windows TipsYou can utilize these tips when building Firemonkey apps with Rad Studio XE8, Delphi XE8, C++Builder XE8, and Appmethod for Android, IOS, Windows, and OSX devices.

#1. Secure And Compress Your Data Connections

In a mobile world it is more important than ever to secure and compress your data connections. Your users are hopping from hotspot to hotspot and switching between 2G, 3G, and 4G as they travel while using your apps. You never know how fast the data connection will be or who might be trying to snoop on your enterprise data. Delphi XE8 uses the platform native HTTP clients for it’s REST requests so that it’s SSL/TLS implementation is always up to date. You can secure other types of connections using SSH tunneling.

#2. Secure Your Local Databases With A Password

If you are deploying a local database like SQLite (or Interbase) with your app you can encrypt the local database by setting a password. Whether it is company enterprise data, user medical data, or even user photos encrypting your local database will help keep your app data and your user’s app data secure.

#3. Keep Your Mobile Apps Responsive With Native Progress And Activity Dialogs

It is never a good idea for your users to feel like your app is frozen while it does a calculation or loads some data. Using a native progress or activity dialog can keep your app fast and responsive while your app performs work in the main thread or even other threads.

#4. Check Network Connectivity Before Trying To Connect

With mobile apps especially it is always a good idea to check for a network connection prior to attempting to open a connection. Users on mobile devices can enter and leave connectivity at any time as they travel and your app should be built with this in mind. This applies to REST, app tethering, and straight TCP/UDP connections. Some mobile platforms (like IOS) even require that you make network connections outside of the main thread so utilize anonymous threads as much as possible.

#5. Keep The Focused Edit Field Visible Above The Virtual Keyboard

If the virtual keyboard pops up over your memo or edit control in the lower half of the device screen you will need to implement a solution to scroll the field into view. There is a demo included with the latest version of Delphi called ScrollableForm which demonstrates another way of doing it.

#6. Keep In Contact With Your Users Through Push Notifications

Whether you are sending an enterprise notification about a company event or notifying a user that they have a new message increasing user retention by utilizing push notifications can really help your app succeed. Push notifications are what allow you to re-connect with a user even though the user is not currently running your app. You can utilize the BaaS components in Delphi XE8 to implement push notifications through Parse and Kinvey or you can use a third party component which implements the Pushwoosh API.

#7. Use Premium Styles For A Professional Look

There are nine premium styles that come with Delphi XE8 Firemonkey and they can really give your app a professional look. Utilizing premium styles can also allow you to provide a light and a dark theme so your users can decide which works best in their lighting environment (Hint: the dark themes work great in full sun environments). Be sure to test out using gradients and images on your form backgrounds to really make these premium themes pop.

#8. Handle App Buttons And Lifecycle System Events

When building multi platform apps be aware of the different buttons and events available on each platform. You can handle the back and menu (VK_MENU in OnKeyDown and OnKeyUp events) buttons on Android devices so your users will have an intuitive flow inside of your apps. You can also utilize events like FinishedLaunching, BecameActive, and EnteredBackground to handle changes in your app’s lifecycle. There is also a bonus component called TfgApplicationEvents which gives you easy access to OnIdle, OnOrientationChanged, and OnStateChanged.

#9. Efficiently Display Data In ListViews With Custom ItemAppearance

The standard TListView component that comes with Delphi XE8 takes one-two lines of text (a title and a detail), an image, and an accessory icon on the right. If you want to display more lines of text in each item you will need to add a custom ItemAppearance. One of the custom ItemAppearances that can be installed supports 4 lines of text (a title and 3 details). Additionally, you can create your own custom ItemAppearances and add even more. Lastly you could also use a TListBox where you can embed any number of other controls within each TListBoxItem.

#10. Optimize Icon And Splash Screen Creation And Deployment

There are a lot of different icon sizes that you will have to create to support all of the different devices and device resolutions that are available. Each of the four major app stores (Google, Apple, Amazon, and Samsung) have their own icon size requirements. There is a free utility available which makes this easier or there is a free website which will generate icons as well. A second free tool will help you make all the splash screen images you need. When deploying to Android devices be sure to add your icon to the homescreen so user’s can easily find your app. Don’t have an icon yet? Check out this set of 750 free icons from Google.

BONUS TIP: Track Usage Of Your App And Exceptions With Analytics

Delphi XE8 comes with a TAppAnalytics component which allows you to see how users are using your app. The feedback you receive from analytics allows you to make smart decisions on how to iterate the next version of your app. You can add custom event tracking anywhere in your app and send exception information automatically to the server for review. Seeing exactly where users may be getting stuck or what features they use the most is gold. The TAppAnalytics feature is a cloud service with both a free tier and paid tiers. There is also a third party component that allows you to also track your app usage using Google Analytics. Both components require an internet connection.

DOUBLE BONUS: Take a deep dive into the inner workings of cross platform mobile apps built with Delphi XE8 Firemonkey.

Check out more tips for Delphi XE7 Firemonkey on Android, Delphi XE5 Firemonkey on Android, Delphi XE5 Firemonkey on IOS, building games with Firemonkey, debugging Delphi XE7 Firemonkey apps, and migrating from C# and .NET to Delphi.

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Ten Tips For Building Stunning Professional Android Apps With Firemonkey

#1. Secure Your App’s Data Connections With SSL

If you are using the REST client or the TIdHTTP component in your mobile apps you should encrypt your connection with SSL to keep your user’s data secure. You can utilize services like CloudFlare and MaxCDN to simplify implementing SSL on your web servers. Or encrypt your data manually with these free components.

#2. Reduce Your Mobile App Data Usage With Data Compression

With mobile service providers charging by the gigabyte lowering data usage is important. If you are making any kind of HTTP connection to a web server from your Firemonkey apps you should enable GZIP compression on both your server and client. There is also an open source compression library for files available.

#3. Save A Shortcut To The Home Screen After Install

If you want users to be able to find your app again after they first install it you should add your icon to the user’s home screen. The user can remove it or it will automatically be removed if they uninstall your app.

#4. Create And Deploy Icons For Your App

You will need to create quite a few different icon sizes to deploy with your app and to upload to the app stores. Each of the four major app stores (Google, Apple, Amazon, and Samsung) have their own icon size requirements. There is a free utility available which makes this easier. A second free tool will help you make all the splash screen images you need.

#5. Handle App Activate And Deactivate System Events

Take action when the lifecycle of your app changes in events like FinishedLaunching, BecameActive, and EnteredBackground. Users multitask using Android these specific system events (and others) will be fired. You should add these events to your app and take action as needed. There is also a bonus component called TfgApplicationEvents which gives you OnIdle, OnOrientationChanged, and OnStateChanged.

#6. Keep The Focused Edit Field Visible Above The Virtual Keyboard

If the virtual keyboard pops up over your memo or edit control in the lower half of the device screen you will need to implement a solution to scroll the field into view. There is a demo included with the latest version of Delphi called ScrollableForm which demonstrates another way of doing it.

#7. Keep Your Mobile Apps Responsive With Native Progress Dialogs

While your app is doing work that the user must wait for you should display a native progress or activity dialog to keep the app responsive. Your app will do it’s work in the main app thread (or your own custom threads) and the native progress or activity dialogs will animate seamlessly in the foreground.

#8. Check Network Connectivity Before Trying To Connect

You should check if a user is connected to the internet before making any opening any connections that attempt to connect using the internet. This way you can notify the user if they do not have connectivity and your app can handle that accordingly.

#9. Handle The Android Hardware Buttons

Android devices have a back button which you should handle so your users will have an intuitive flow inside of your apps. On Android devices there is also the VK_MENU button which you can handle in the OnKeyDown and OnKeyUp events as well.

#10. Automatically Save Form State Between Sessions

A new event is available in Delphi XE7 called TForm.OnSaveState which gets called when your app is going to be hibernated by Android. There is a free class helper available that will loop through the controls on your from in the OnSaveState event and save them out to JSON. When you form is created you can load up the previous saved form state.

BONUS TIP: Google Cloud Messaging Push Notifications

If you want to keep connected to your users and increase retention you can use push notifications. On Android there is a push notification API from Google called Google Cloud Messaging. It is pretty closely tied to Google and you have to have API keys but keeping connected to your users is worth it. Push notifications are similar to an email newsletter. You can also do push notifications through the BaaS components via Parse and Kinvey.

DOUBLE BONUS TIP: Apply Premium Styles For A Professional Look

Delphi XE7 comes with 7 premium styles for Firemonkey that look fantastic. You can give your users the option to choose which style they want to use at runtime. The Jet style works particularly well in direct sunlight.

Finally, check out the older version of this post for Delphi XE5. Check out twelve tips for IOS. And find out tips for building games with Delphi Firemonkey.

Tags: , , , , , , , , , , , , , , , , , , , , , , , ,

Polish Your Firemonkey Apps For IOS With These Twelve Tips

#1. Monetize With In App Payments And/Or Ads Like Admob And Iads

There are a number of free and commercial components which handle in app payments and ads for you on IOS with Delphi XE5 Firemonkey. Check out DPF for IOS which has both in app payments and Iads components for free. The other components are from JVESoft and from Flash AV Software.

#2. Secure Your App’s Data Connections With SSL

Users are connecting from public hotspots these days and you need to secure your data connections to keep your user’s data safe from snooping. You can use the free OpenSSL components with Indy or there are two other commercial SSL components here and here.

#3. Encourage Users To Rate Your App

Usually only people who want to give your app a low rating end up on the App Store rating page and rate your app down. In order for you to encourage users who also really like you app to rate your app you can use a component like this or build your own using dialog boxes. DPF for IOS has a free component and JVESoft has a commercial rating component.

#4. Create And Deploy Icons For Your App

There are around 30 different icon sizes that you need to create to handle both Iphone and Ipad icons with your IOS app. There is a free utility which will take your logo and turn it into all off the icon sizes that you need.

#5. Use Premium Styles In Your App

Embarcadero provided some additional premium styles which you can download and use with your apps. There is a dark style and a light style for both IOS6 and IOS7. You can provide both to your users and they can choose for themselves which one they like on your app best.

#6. Handle App Activate And Deactivate Lifecycle Events

The lifecycle events are really important on IOS (much more so than on Android). There is no functionality to exit your app on IOS so you need to use those backgrounding lifecycle events to take care of saving your settings etc.

#7. Add Google Analytics To Your App

If you are building a professional commercial app you will want to collect usage data so that you can find out how your users are using your app and use that data to guide how you upgrade your app and add new features.

#8. Keep The Focused Edit Field Visible Above The Virtual Keyboard

When the virtual keyboard pops up it will by default cover the box that is being edited if it is below the bottom half of the screen. You can scroll your form or tabcontrol so that the field being edited stays visible. Make sure to implement a version of the code that handles multiline edit controls like TMemo as well.

#9. Setup Apple Push Notifications

If you are building a long term commercial app for IOS one way you will want to keep in touch with your users is through Push Notifications. It is always easier (and cheaper) to re-connect with existing users than it is to get new users. Push Notifications can help your achieve that.

#10. Use Threads To Keep Your App Responsive

There is a multithreaded progress dialog which is the main link of this tip but in addition to that there are two native progress dialogs for IOS here. And there is the anonymouse thread unit called AnonThread which comes in the samples section of Delphi XE5 Firemonkey. You can read this blog post on how to use it. Lastly you can use the ExecuteAsync function with TRESTRequest to do asynchronous REST calls.

#11. Handle Device Idle Time Out

If you are doing any kind of downloading using your app you will want to handle the idle time out of the device so that your app doesn’t dim out and go into the background when it is actually working. You can disable the idle time out, finish your downloading, and then re-enable the idle time out to conserve the user’s battery.

#12. Check Network Connectivity Before Trying To Connect

With mobile devices your app could lose connectivity at any time as the user travels around while using your app. You need to build that connectivity detection in your app from the start so if connectivity does drop you can handle it gracefully either by queuing up actions or sending your users notifications that they need connectivity to continue.

Tags: , , , , , , , , , , , , , , , , , , , , , ,