Skip to end of metadata
Go to start of metadata

This update is a maintenance release which includes new services and significant enhancements that are crucial for enterprise apps development. This release adds a new cross-platform background sync service that leverages native OS capabilities, allowing data syncing tasks to continue occurring in the background even the apps are not currently active. Furthermore, this release marks significant milestone for iOS development, adding support for automatic cell height calculation based on the given XIB, support for automatic dynamic cell height with AutoLayout, and fine-tuned scrolling performance for the best, smoothest user experience.

In addition, this release also delivers important stability and performance improvements as our team continuously benchmark the overall performance on the production apps which have been deployed to devices, particularly the Enterprise App Framework and the core services such as image loader and cache services. If you're building apps using business template, we highly recommend you to upgrade to this latest release.

Upgrading to Crosslight 2 Update 4 is free to all customers with active subscriptions.

For more information about release band quality and how to obtain and apply updates, see Updating Crosslight.
Quality Band [?]STABLE
Build Number2.0.5000.78
Last Build DateAugust 29, 2014

Release Highlight

The following sections highlight the noteworthy enhancements and new features included in this update.

New Crosslight Sync Services

In the earlier release, Crosslight includes powerful data access services that allows you to easily working with remote data source in your apps, such as retrieving and updating data through a RESTful service. It also ships with a data synchronization service which lets you easily perform two-way data sync between the client and server. Currently, you will need to trigger the sync process manually, typically through pull-to-refresh gesture.

Crosslight 2.4 takes data sync to the next level by introducing an advanced sync service that runs in background at certain intervals. Unlike classic implementation, the sync service leverages native OS capabilities to perform the background syncing. In addition to manual sync, now you can also add automatic data sync based on certain intervals, or let the OS determines the best time automatically according to its network condition and resources.

To learn how to use the new Crosslight sync service, see Working with Background Sync Service.

Background Sync Support with Enhanced Push Notification

Along with the new sync service, this release also ships with enhanced push notifications to support silent notifications which can be used for data sync purpose. This feature lets you easily implement apps that trigger data sync anytime you prefer through push notifications sent from server. Combined with the powerful Crosslight background sync service, you can now create great enterprise apps that works in any conditions, either offline or online, and ensure data changes are always in sync.

For more information, see Using Push Notifications for Data Sync.

Major Improvements to Crosslight iOS

This release marks a significant milestone for Crosslight iOS components, particularly in the scrolling performance for table view and its core services such as image loader and resource cache services.

Many of the process in table view have now been refactored — complex operations are optimized, unnecessary implementation is removed, and CPU intensive operations are moved to asynchronous threads — to achieve a single objective: ultra-smooth scrolling performance.

To make the table view really smooth, we have also improved numerous services that are frequently consumed such as image loader and cache services. The image loader has been significantly fine-tuned so that none of its process interrupt the main UI thread when requesting and downloading the image from server, thanks to the enhanced image loader which now leverages iOS’s Grand Central Dispatch. At the same time, the cache service has also been optimized, allowing it to fetch a cache from a large cache session in just a fraction of second.

The combination of these various performance tweaks across iOS components and services resulted in an exceptional, ultra-smooth scrolling performance. The following video shows a table view with complex cell and image loader in action. Note that the demo was performed on the iOS simulator. In the actual device, the performance is considerably faster and smoother.

To enjoy these improvements, simply update the Crosslight assemblies with the latest release. There are no additional efforts or code changes required in your apps.

New Time-saving Features in Crosslight iOS

In addition to performance improvement, this new release also makes iOS development much easier by automating frequent tasks that were previously difficult or tedious to achieve.

Automatic Dynamic Cell Height Support

Implementing dynamic cell height in table view such as those in Twitter and Facebook are considerably difficult and complex which typically require a lot of code. With Crosslight 2.4, you don’t have to write any single line of code, thanks to the built-in AutoLayout support. The performance is also blazing fast, since the improved table view automatically calculate the height off the screen and cache them smartly.

The following illustration shows the table cell design as well as the result.

Automatic Row Height Detection Based on XIB

In the earlier release, you are required to create a custom table data source in order to use a custom table cell with static height. In this release, you just need to plug-in the XIB as the cell template as you would normally do, Crosslight automatically resolves the height for you at runtime — according to the height you specified in the Interface Designer.

Automatic Aspect Ratio Calculation in Thumbnail

In the earlier release, you must explicitly specify the width and height of the thumbnail when capturing a photo or choosing a photo from media service. However, in real world apps, you might need to capture thumbnails with a desired width but keep the aspect ratio for the height. Crosslight 2.4 now lets you easily achieve this by simply specifying the thumbnail height to -1. You’re all set.

The following code shows how to capture a photo from the camera service and returns a thumbnail with proportionally-set height.

The result can be seen in the illustration below, which also compares the result if the thumbnail height were set to a fixed value.

Automatic Selection Persistence in Navigation Drawer

In this release, the navigation drawer component has been improved to support wider range of scenarios. You can now easily show the selected item of the current visible navigation. When users tapped on other navigation item, or if you navigate to a ViewModel through API, the selection in the drawer will be automatically synchronized.

To use this feature, simply add one line of code to the drawer settings in the constructor of your drawer view controller.


In the view controller associated to the left-side navigation, make sure the configuration is appropriately set to support the selection visibility.


The following illustration shows the result of the selection appearance in navigation drawer.

Stability Improvements to Enterprise App Framework

In addition to new features, we also continually improve the Enterprise App Framework to support wider range of business scenarios. This release includes a number of important improvements related to performance and code refactoring, as well as support for Facebook’s new app-scoped ID that was recently introduced. More change log can be seen in the section below.

If you are using App Framework in your apps, we highly recommend you to upgrade your projects with the latest App Framework release.

Sample Updates

Along with this release, all samples have been updated to reflect the changes and leverage the new features available in this release. Reported issues related to samples have also been fixed and committed to the master branch. Please download the latest samples from the master branch here.

Specifically, the new and updated samples are:

  • Sync Samples
  • Background OS Sync Samples
  • Push Sync Samples

For more information about configuring samples in your development machine, see Configuring Samples.

API Documentation Updates

This release includes many new APIs across the Crosslight core frameworks and the platform-specific view components. To help you discover and learn more about the new API, the Crosslight API documentation has been updated to reflect the API changes in this release. Visit Crosslight API Documentation.

About Crosslight 2

This update is building on Crosslight 2 release which includes 200+ new features that make enterprise cross-platform apps development a breeze. Take a look at all the new features in the Crosslight 2.0 Release Notes  and see what you are missing out on!

Download Crosslight 2 today.

Updates and fixes in this release

This release includes the following updates and bug fixes:

T Key Summary P Status Component/s
Task CROS-534 Introduce UserChangedEvent that will be published when UserService.SetCurrentUser is called. Major Closed Frameworks
Task CROS-533 SimpleJson now supports serialization and deserialization of subclassed/derived type. Major Closed Core
Bug CROS-532 Hide delete command in ImagePicker when there is no image attached Major Resolved Android
Bug CROS-531 OnNavigated method not invoked in Winphone Major Closed Windows Phone
Bug CROS-530 Calling GetSingleAsync method on IDataRepository will throw "Entity with type 'Type' is not registered." exception in certain circumstances, particularly when the entity has not been initialized. Major Closed Frameworks
New Feature CROS-529 Synchronization service now supports sync without user login. Major Closed Frameworks
Bug CROS-527 Option menu bindings are not registered in TabActivity. Major Resolved Android
Bug CROS-522 In Multi Page control, the parameter.Data specified in the NavigationItem is not available in the Navigated event of ViewModel. Major Resolved Core
Bug CROS-521 Value converter is not triggered when the bound value is null. Critical Resolved Core
Bug CROS-520 Crosslight's SQLite is always returning null values on byte array fields Major Resolved Data
Task CROS-518 Added CloseDetailOnBackNavigation property in UIMasterDetailViewController. This feature allows detail view to be automatically refreshed when back navigation is performed in the master view. Major Closed iOS
Bug CROS-515 Unable to save image in Edit Profile of Business Project Template Major Resolved Android
Bug CROS-512 Button "Done" and "Cancel" are not working properly in RegisterPage at Windows Phone Emulator Major Resolved Windows Phone
Bug CROS-510 button learn more not responding Minor Closed Windows 8
New Feature CROS-504 New: Crosslight OS Sync Service Major Closed Core
Improvement CROS-503 Improved resource cache service performance when frequently looking for a cache item in a large list. Major Closed Data
Bug CROS-502 RestClient now properly throws cancelled exception when the request is cancelled programmatically. Major Resolved Data
New Feature CROS-501 Support Facebook 2.0 App-Scoped ID Major Closed Frameworks
Bug CROS-500 Repository in data view models is no longer re-instantiated whenever the property is accessed. Major Resolved Frameworks
Bug CROS-499 Navigation result callback in a modal navigation is not invoked after calling the Close method (only occurs when the host is drawer navigation). Major Closed iOS
Improvement CROS-498 Support thumbnail scaling with proportional aspect ratio in camera and media library service. Major Closed iOS
Improvement CROS-497 Fine-tuned image binding performance in UITableView, particularly when displaying placeholder. Major Closed iOS
New Feature CROS-496 Added smart height estimation and caching feature, Crosslight UITableView scrolling performance is now ultra smooth particularly when used in conjunction with dynamic cell height. Major Closed iOS
New Feature CROS-495 Added ISupportDynamicHeight interface allowing you to improve scrolling performance through custom height calculation. Major Closed iOS
New Feature CROS-494 Added a specialized generic UITableViewCell component that supports advanced direct binding scenarios to optimize scrolling performance. Major Closed iOS
New Feature CROS-493 Major performance improvement in ImageLoader service by re-engineering the asynchronous implementation with Grand Central Dispatch (GCD). Major Closed iOS, Services
New Feature CROS-492 Introduced IViewModelBinder interface to provide a way for direct binding between View, ViewModel and Model. Major Closed Core
Improvement CROS-491 Placemark and its related classes now implement INotifyPropertyChanged to support data binding. Major Closed Core
Bug CROS-490 ImagePicker fails to show the image in Inventory Tracker (XML) sample Major Resolved
Task CROS-489 Nothing happen when user press "Show Intersoft Solutions in Map" Major Closed Windows 8
Task CROS-484 "Task performed in background, took 2s." should appear 2s after "Perform long-running task in background..." message Major Closed Windows 8
Task CROS-483 There is no preview after select image from library Major Closed Windows 8
Task CROS-482 The password textbox doesn't use textbox for password (it reveals entered password) Major Closed Windows 8
Task CROS-481 Selected payment service is not correctly discovered at runtime Major Closed Windows 8
Task CROS-479 String Format: to show number with currency string format Major Closed Windows 8
Task CROS-478 Selected items doesn't removed when user press "Remove" button Major Closed Windows 8
Task CROS-477 Press "Get Selection" always returns "2 categories selected" Major Closed Windows 8
Bug CROS-476 PlacemarkAddress ToString() method returns wrong text Major Resolved Core
New Feature CROS-475 ImageLoader service now supports force loading from disk cache by enabling the ForceLoadDiskCache property in the passed image loader settings. Major Closed Services
New Feature CROS-474 RestClient now automatically detects absolute URI associated to the given RestRequest. Major Closed Data
New Feature CROS-473 ActionPresenter now supports async method for the Show methods. Major Closed Frameworks
New Feature CROS-472 Support Stored Procedure select mode in REST repository. Major Closed Frameworks
Bug CROS-471 Entity Container now support relationship management where the related entity does not have navigation property to the origin entity. Major Resolved Data
New Feature CROS-470 Add GenerateController property for Stored Procedure controller at EDM Designer Extensions Major Closed Data
New Feature CROS-469 Implement authorize configuration for Stored Procedure controller at EDM Designer Extensions Major Closed Data
Bug CROS-468 Added missing "using" when generating entity controller for stored procedure. Major Resolved Data
Bug CROS-466 Callback function never called after sending a mail (Android) Major Resolved Android
Bug CROS-465 Deserialized date is not converted to local timezone properly when using data repository in Enterprise App Framework. Major Resolved Core, Services
New Feature CROS-462 Support automatic dynamic cell height in table view. Major Closed Android, iOS
New Feature CROS-461 Auto detect row height from cell template based on the XIB Major Closed iOS
Bug CROS-459 Fixed iOS serialization issue in reporting service Major Resolved iOS
Bug CROS-454 The loading time to get "Is Intersoft Site Reachable" takes too long. Major Resolved Windows Phone
Bug CROS-453 The loading time to "Show Intersoft Solutions in Map" is to long. Major Resolved Windows Phone
Bug CROS-446 ScheduleLocalNotification method in NotificationService doesn't honor the given scheduled date value. Major Resolved iOS
New Feature CROS-429 Add selected state in Navigation Drawer. Major Closed Android, iOS
New Feature CROS-405 New iOS Component: Keyboard Input View Major Closed iOS
Bug CROS-309 Pull to refresh takes very long time to refresh and blocks all input in WebAPI-enabled Inventory Tracker sample. Major Resolved Android
Bug CROS-308 Unable to save image/file to disk in Entity Controller (WebApi). Major Resolved Data
Task CROS-92 Support binding to ViewModel in ItemBindingDescription. Major Closed
Improvement CROS-87 Resolve local image in ImageView binding adapter. Major Closed Android
Bug CROS-56 Image file caching not working after image editing. Major Resolved Android

For more information about release band quality and how to obtain and apply updates, see Updating Crosslight.