Custom Mobile

App Development

For iPad and iPhone

by LucoTrav


NthLib Update Release History ...

Version 2.5.6 (Nov 22, 2023)

• Increased Deployment Target to require minimum iOS 17.0.  (3803)

• Added improvements to several AppConfig editing and publishing features.  (3764)

• Updated management of operating system triggered low-memory situations in order to smooth out the user experience.  The changes are intended to preserve the state of the app while allowing the user to use the app with minimal disruption.  (3775-3778)

Version 2.5.5 (Mar 16, 2021)

• Increased Deployment Target to require minimum iOS 13.6.  (3749)

• Extended "Dark Mode" support to include all configuration editing.  (3750)

Version 2.5.4 (Feb 16, 2021)

• Error checking of portfolio batch downloads:  URL formats are now checked and user alerted while the config is being edited instead of later at runtime after the config is loaded.  (3724)

• These changes corrected a very rare problem that occurred at app launch where the app attempted to auto-open user docs (content cache and configuration databases) more than once.  This turned out to be a concurrency problem that was solved by executing the doc open operations asynchronously but on the main thread.  (3725-3735)

Version 2.5.3 (Nov 20, 2020)

• About View redesigned to support autolayout.  These changes will render correctly on any iOS device.  (3668-3690)

• Modified the app's info plist to support custom copyright strings.  These key/value pairs can be entered by a user and then will automatically be read and displayed at runtime.  (3629-3694)

• Additonal modifications to the About View to better support "Dark Mode" and latest iOS version.  (3697-3699)

Version 2.5.2 (May 22, 2020)

• Portfolio item captions are now preserved when batch script executes. (3521)

• Portfolio batch exported file names have been made more human readable. (3522)

• Editing Portfolio items now displays a thumbnail to make user identification of the item easier. (3525)

• Crash bug fixed in startup user notification actions that was occuring if there was no internet connection.

• Increased content cache size to 300 MB to accomodate larger pictures being created by recently released mobile devices. (3528)

• Tightened Auth Boot security relating to app bundle IDs.  Before these changes, active Auth Boots could in some cases be defeated by changing the case of characters of an app bundle ID. (3531)

• Adds support for custom "About" view.  The documentation and template for this feature can be downloaded using NthBuilder. (3532)

• Color coded publication auth states in the publication view.  This is to give the user quick feedback regarding the current publication state.  (3539-3540; 3545)

• UIDocumentState got a new value in a recent iOS release.  This change was incompatible with operations that should only execute once on app launch.  The result was that the launch operations were executing every time a config document was written to the local store.  And in some rare cases, this constant hammering on the document was causing data to be permanently lost.  The startup operations have been completely re-written so they are guaranteed to safely execute only once for every launch of the app. (3574)

• NthLib has been updated to guarantee conformance with Split-Screen-Multitasking.  (3582)

• Double-Tapping a cell in the configuration table view now auto-launches the selected configuration. (3583)

• NthLib has been updated to use a Launch-Screen Storyboard. (3593; 3595)

• Replace manual website trust evaluations with default system handling. There are no use cases where manual evaluations are indicated and default handling is more secure. (3599-3600)

Version 2.5.1 (Feb 25, 2019)

• Portfolios now have a convenience batch editing feature where the remote URL to a script executes, auto-loads, and formats an arbitrary number of resource URLs. This speeds up creation and editing of Portfolios. (3506)

• The Web ViewController has been configured to set its "ignoresViewportScaleLimits" property to YES by default.  This effectively over-rides web content that has internally set "user-scalable" to NO.  This behavior is intended to mirror the default behavior of Safari and SafariViewController. (3508)

Version 2.5.0 (Dec 11, 2018)

• This version adds support for iOS user notifications.  Now, both the app icon and the user interface provide visual "badging" feedback to inform the user when app configurations have been updated on the server and are ready for download. (3447-3457)

Version 2.4.7 (Nov 20, 2018)

• Corrected a rare crash bug that occurs when the user loads a custom config URL while displaying the config table view. (3422)

• Smoothed out loading, display, and update of the config table view. (3423)

Version 2.4.6 (Nov 05, 2018)

• This version corrects an instability that was resulting during some low memory situations. There was some potential in these cases for the app to crash. These code changes correct the problem by gracefully allowing web views to be deallocated when necessary to conserve memory and then rebuilding them on-demand but in an order that maintains stability and is transparent to the user. (3393-3394)

Version 2.4.5 (Oct 26, 2018)

• Fixed a potential crash bug where the web view controller progress bar was attempting to observe the web view before the view was completely built. (3384)

Version 2.4.4 (Oct 18, 2018)

• Disabled contextual menus in web views that expose current page URL. (3358)

• Cosmetic modifications to web view progress bar makes the bar easier for the user to see.  (3361)

• Project settings changes to support iOS 12.  (3362-3363)

• Library addition for export of AppConfig files to support cross platform access.  (3366)

• Moved app privacy statement to an external resource and added logic that auto-labels the statement to the app that is currently running.  (3374-3376)

Version 2.4.3 (Apr 19, 2018)

• Added a smoother animation when transitioning from one app configuration to a different one.  (3303-3306)

• Some use cases make validation of app configuration publications logistically impractical in the CloudKit Dashboard.  This release adds a control to bypass the external validation security feature.  The feature is still enabled by default when an app configuration is first created.  But a CloudKit administrator now has permission to explicitly disable or enable the validation feature as appropriate.  (3307)

• Introduces support for Mobile Device Management (MDM) - MDM administrators that have installed an NthLib app on an iOS device will be able to remotely control NthLib permissions for configuration editing; configuration publication; and copying text to the general pasteboard.  (3311-3330)

Version 2.4.2 (Feb 12, 2018)

• NthMetrics have been modified to collect and upload the app's current AuthBoot (if any) and its state.  (3280)

• Corrected a crash bug related to the polymorphic design of editor views. (3282)

• Cosmetic - Newline characters in app config text descriptions were not being displayed correctly when translated into HTML. (3283)

• Multiple changes to copy/paste operations of config components.  Paste results are now more contextual and robust. It is now possible to paste across configs instead of only within a single config. (3285-3291)

Version 2.4.1 (Dec 19, 2017)

• Logic changed that shows/hides the tab bar.  This feature now works consistently when a new view controller is pushed on the navigation stack.  (3248)

• Fixes a change apparently resulting from Xcode 9 SDK installation.  The bug resulted from text changes in transient accessory view text fields (3249)

• Turned on the metrics collection feature for NthApp making it consistent with the NthLib privacy statement. (3251-3252)

• The config table list now displays an icon for the currently loaded config that indicates its current publish/edit permission for the device. (3259)

• On app activation, the server is pinged to check the minimum supported NthLib version against the current install.  (3260-3262)

• iOS 11 introduced apparent concurrency issues in Core Data (the internal data storage model used by NthLib.)  These issues only presented on app activation so storage operations are now suspended until the app is fully activated.  (3263)

• The config table list display has been improved in several places.  The user now sees more accurate information about installed configs and their publication states.  (3267)

Version 2.4.0 (Nov 08, 2017)

•     Security feature added that requires app configs to be reviewed and approved by an Admin user of the Apple development account responsible for the app.  A config will not load or install in NthLib until it is approved.  This addition is intended to help NthLib Subscribers comply with iOS App Store Guideline "1.2 - User Generated Content".  It also serves as a secondary protection against unauthorized distribution of configuration content.

•     This version fixes a number of bugs related to app config edit keyboard issues.  These appear to have resulted from changes to the SDKs released with iOS 11.

•     Security feature added that requires a user to explicitly modify publish/edit permission keys using NthLib's internal UI.  This changes the previous pattern where keys were implicitly passed through the Pasteboard.  Changing this function reduces the chance of a config Publisher accidentally revealing a permission key to an unauthoriized user.

•     The NthLib info property list now has a key/value pair that allows the subscriber to designate an alternative CloudKit container for app config storage.  This feature can either be used by manually modifying the property list or preferably by using its corresponding feature in the NthBuilder macOS utility.

•     NthLib app users are now presented with a Privacy Policy on initial app launch.  This addition addresses the iOS App Store Guildeline "5.1.1 (i) Data Collection and Storage".

Version 2.3.2 (May 28, 2017)

•     When an NthLib app is re-activated, web views that are already loaded will delay their auto-refresh if the content load was recent.  This results in a far smoother view activation.

•     NthLib users who have Publish or Edit permission for the currently loaded configuration will now see on-screen error messages if NthLib is unable to load web content because of an App Transport Security (ATS) error.  This is intended to help Publishers and Editors more easily track URL formatting errors before a configuration is published.  These errors will be detected and reported on-screen for both top-level and embedded content.

•     For NthLib Subscribers who have arranged permission to transport non-secure content, embedded links now load successfully in a separate view even if their top-level frame was loaded using a secure connection.

•     Web content loading has been re-factored to correctly handle with minimal user impact mail links; app store links; custom URL links; and standard HTTPS requests.

•     This release corrects a bug where the tab bar failed to re-appear after a root controller in the "More" view controller was dismissed.

•     Portfolio images now can be zoomed in and out by double-tapping or pinching and they can be panned using two fingers.

Version 2.3.1 (Apr 14, 2017)

•     This version fixes a bug that crashed the app when the user turned Airplane Mode on while the app was running.

Version 2.3.0 (Mar 28, 2017)

•     The view accessed through the "About" tab has been redesigned to be more readable and easier to navigate.

•     A secondary purpose for this redesign is to illustrate one of NthLib's key features to users who edit app configurations.  The new "About" view uses a simple HTML file as its underlying pattern.  The output the user interacts with appears as an iOS view controller and cannot be distinguished from a native user interface .  This appearance illustrates a fundamental shift in iOS appearance that was introduced by Apple in iOS 7.0 and has been continued in subsequent releases.  Editors of NthLib app configurations are encouraged to exploit this appearance pattern when designing and deploying their app configurations. Configurations designed this way can offer native functionality to users by employing existing NthLib features but without the need for expensive native customization.

Version 2.2.1 (Feb 24, 2017)

•     Fixed Sample Configuration editing issues associated with the adoption of App Transport Security (ATS).

Version 2.2.0 (Feb 20, 2017)

•     Fixed several internal problems related to App Transport Security (ATS).

•     Optimized backend support for:

     ◦     Enhanced transport security;

     ◦     Reduced app size;

     ◦     Improved performance and user experience.

•     Simplified the steps needed for a user to edit and publish app configurations.

Version 2.1.0 (Jan 03, 2017)

•     Once again, building on the previous release, the web view controller has been enhanced to make its user controls more browser-like.

•     The web view internals have also been modified to compensate for WebKit peculiarities.  More specifically, these changes better handle loading of links that were not designed to target the page main frame.  For its own reasons, WebKit was not handling these loads well.  The case is now detected at run-time by creating a new navigation that seamlessly loads the linked page.

•     Finally, NthLib now by default enforces Apple's "App Transport Security" (ATS) policy.  This policy requires that all content loaded using the HTTP protocol must be transported securely.  This policy has been documented for NthLib users who have Publish or Edit permission.  These details can be viewed in any NthLib app by entering edit mode and opening the "Tips" view.


Version 2.0.3 (Nov 22, 2016)

•     The features added in this release build on those of version 2.0.2 ...

•     Back and Forward controls allowing the user to transition between views have been standardized across all view controllers.

•     In the case of web views, both back and forward controls transparently transition between web pages or views depending on the use context.

•     The controls are auto enabled and disabled as appropriate and appear only when transitioning between different views and web pages would make contextual sense to the user.

•     The config edit option for web views that allowed a new view controller to be pushed or not no longer has context because of the other changes in this release.  Eliminating this option also automatically improves memory management for the app.

Version 2.0.2 (Nov 14, 2016)

•     This release removes all calls to legacy iOS web content viewing APIs and replaces them with the recently released and recommended WebKit APIs.  Affecting most of NthLib, these changes improve content load speed; stability; and UI responsiveness.  End users should immediately notice an improved user experience.

Version 2.0.1 (Sep 26, 2016)

•     Corrected security gaps in the way NthLib components are transported.

•     Deploys a more seamless integration of NthLib with the macOS utility NthBuilder.

Version 2.0.0 (Jun 15, 2016)

•     iOS 9 performance and compatibility optimizations.

•     NthLib integration into the OS X NthBuilder application and system.

•     Bug fixes to correct view sizing and device rotations related to iOS 9 update.

Version 1.5.2 (Jul 06, 2015)


•     The app configuration "Preload Content" feature is intended to provide NthApp users with the ability to view content offline during periods when a network connection is not available or is not being used for some other reason.  The changes in this update (1.5.2) have been added to improve the reliability and performance of the preload operation and to make preloads work more seamlessly with the publication of app configurations in iCloud.

Version 1.5.1 (May 13, 2015)

•     Improved the integrity and security of configuration files during transport.  These changes are designed to defend against file tampering or accidental file corruption.

•     Improved view rotation transitions to work better with iOS8.

•     Updated help documentation internal to the app.

•     Redesigned the table displaying all installed configurations to more clearly communicate to the user the publication and edit state of items in the list.

Version 1.5.0 (Jan 21, 2015)

•     iCloud Integration:  This is a new feature that allows a user with configuration edit permission to publish a configuration to the cloud with a single tap.  This published configuration then can be downloaded to any NthLib app by distributing a custom URL to end-users that combines the ID of the configuration with the ID of the app.  As long as the app is installed on a user's device, activating a link to that custom URL will activate the app, download and install the newest version of the configuration, then make that configuration the current active configuration.  This  feature replaces the need for manually exporting a configuration and installing it on user managed server space.  Manual export of configurations is still supported only for the purpose of archiving of configuration files.  iCloud support is seamlessly integrated into NthLib and takes only a couple of taps to execute.

•     Forced Configuration Download From iCloud:  This is a convenience feature added for users with configuration edit permission.  Its purpose is to allow a configuration editor to replace an obsolete configuration stored on device with the official version that is currently published on iCloud.

•     Portfolio Improvements:  Enhancements that allow smoother portfolio item transitions have been added along with changes to the transition controls that make them less obtrusive but still available for convenient navigation of the portfolio items.

Version 1.4.2 (Oct 20, 2014)

•     Bug fix:  Corrected iOS8 compatibility issues

Version 1.4.1 (Sep 28, 2014)

•     Bug fix:  Corrected several iOS8 compatibility issues

•     Added a text field to the standard keyboard in cases where the keyboard might obscure a text field being edited.  This change should be flexible enough to handle any keyboard or device orientation on an iPad.

Version 1.4.0 (Jul 23, 2014)

•     New Feature:  A new controller to support audio and video content has been added.  All of the formats supported by QuickTime are also supported by the NthLib media player.

•     Feature Enhancement:  While content is loading in the web controllers both stand-alone and in portfolio format, activity indicators now more accurately reflect the load state.

Version 1.3.3 (Jun 18, 2014)

•     Bug fix:  In the contact editor, editing the contact name was being obscured by the keyboard.  This view has been reorganized so that the fields being edited are all now visible.

•     In the web link editor, there is now an on-off switch that fine-tunes the web controller so that tapped links may either push a new controller on top of the current one or load the linked content into the current view.  Some web pages depending on their design naturally call for one approach and some the other.

•     A number of public domain tab icons have been added to the bundled collection for use in creating and editing configurations.  These new images are slightly smaller and provide additional variety of topics to the original set.

•     Low level changes have been made to the on-device cache storage of downloaded content.  These changes add stability and improve app performance and responsiveness.

Version 1.3.2 (May 30, 2014)

•     Bug fix:  The backup configuration feature has been corrected so that if a configuration edit session is interrupted either by the user or the operating system, the next time the user requests an edit session for that configuration, the option will be presented to continue where the interruption occurred.

•     Bug fix:  Tapping "Save And Test" after entering an empty or non-URL entry in a portfolio URL field was crashing the app.

•     Bug fix:  Newly built configurations were not by default authorizing the current app.

•     Bug fix:  The "How To..." navigation control should not have been displayed in the "About" view for configurations that were not editable by the current user.

•     Bug fix:  In web views, redirected URLs were not loading correctly in every case.

•     Bug fix:  Server response status errors were not being interpreted correctly for some error types.

•     Added capability to allow a configuration creator to manually add an app authorization to a configuration by typing in the exact bundle ID and app name.

•     Refinements added to custom URL generation so that the URL will be unique to an app name chosen by the config creator.

•     Updated all web content internal to the app to appear native to iOS7.

•     A feature has been added to allow a configuration creator to copy individual controller definitions either within a configuration or to a configuration in the same app or to another app.

•     Added a validation feature that will check configurations that are being imported to make sure they are version compatible with the current app version.  In the case where a configuration was edited with a newer app version that the currently installed one, the user will be warned that they should update their app to guarantee correct functionality.

•     The "About" view has been enhanced with the capability of displaying the current text description or if the creator prefers, a downloaded web page.

Version 1.3.1 (April 14, 2014)

•     Corrected the redundant case where current content was reloaded from the server because the server was not returning header correct information.  This change improves performance and reduces the load on the server.

•     Improvements to the stability of cached content.  This change also improves the performance of content loading and storing.

•     The "About" view in the tab bar has been simplified to appear more like a native iOS7 view.

•     Corrected an appearance update problem that occurred when the network status changed while the user was viewing the current configuration view.  The UI correctly detects the network change now and updates appropriately.

•     Fixed a crash bug related to loading a tab icon image from outside the app.  The workflow for this load feature has also been changed to be more natural and to provide more immediate feedback when the load completes.

•     Configuration edit workflow changed to allow the user to see and execute all configuration actions if the current device is the one the configuration recognizes as the "official" editing device.  As a last resort the edit operation also checks the general pasteboard to see if the edit permission key for the current configuration is on the pasteboard.  Finding the correct key on the pasteboard also will make all configuration actions available to the user.  In the case now where all actions are not available for the reasons listed above, the end-user will see only the currently installed table list of configurations available for loading.

Version 1.3.0 (March 5, 2014)

•     A "Preload" control has been added to the current configuration view that modally loads and caches all of the content needed to view the configuration. This modal view displays a preload progress bar.

•     App controls have been updated to conform to iOS7 appearance guidelines.

•     Portfolio item transitions have been changed to be smoother and their controls made less intrusive and more intuitive.

•     Controls have been introduced to portfolio views to allow the user to hide and show both the top and bottom bars in order to allow a larger content view.

•     Built-in iOS7 file protection has been activated so that all cached and configuration component files are protected from tampering any time the device is locked.  The device's "Passcode Lock" feature must be activated by the user in order for this feature to be active when the device is locked.

•     Configuration content downloads now respond to a server authentication username/password challenge with a standard iOS7 popup view. 

•     Content downloads are capable now of automatically recognizing and connecting using both the http and https protocols.

Version 1.2.1 (December 05, 2013)

•     Background configuration syncing:  When the user activates a new configuration or just activates the app, NthApp will kick off a sync operation that checks the server for the configuration's content.  When it finds updated content available, it automatically downloads it and caches it for fast access or for off-line viewing.

•     Auto-Download of updated configurations: When NthApp detects that an active configuration has an updated version at its server address (if any provided by the configuration creator) it will auto-download the updated configuration and present it to the user.  The user is informed with an alert notification when this download is complete.

•     Protection from orphaned configurations and configuration collisions:  When a configuration is first created, the creator will be asked to provide an edit permission key that will be used later if the app encounters a situation where the creator would like to edit a configuration.  If a user requests a configuration edit session and NthApp fails to recognize that user, the app will request that the user enter the permission key that was entered when the configuration was first created.  This situation might arise is the creator moves to a different device for editing or if the app is deleted and then reinstalled.

•     AppStore Link To NthApp:  The custom URL creation operation that attaches the configuration file and any custom URL that is provided by the configuration creator also include for convenience a link to NthApp on the AppStore now.  This is intended to cover the case where a user invokes a configuration custom URL but has never installed NthApp.

Version 1.2.0 (October 30, 2013)

•     iOS7 support has been added to NthApp.

•     Custom configuration URL:  If the configuration creator has supplied a URL to a location on a server, and then copied the attached configuration to that address, the "email" configuration feature will generate a custom URL that can be used in any appropriate source on any iOS device where NthApp is installed.  When that custom URL is invoked, NthApp will now launch and load that configuration.  Then each time the configuration is loaded or the app is activated when that configuration is current, the server URL address will be checked to see if a new version of the configuration has been uploaded.  The edit field where the creator enters the location URL for their configuration is found in the "App Configuration Info" section of the configuration editor.

•     Performance improvements specifically for loading images from the source server and from the device after download.

•     Functionality bug fixes.

Version 1.1.0 (August 30, 2013)

•     Offline content viewing (Airplane Mode for instance) now works transparently in cases where content has been loaded and viewed during the last two weeks.  No user interaction is needed to activate this feature and more enhancements are planned for future releases.

•     Importing App Configurations:  Configs that have been emailed to a user who has NthApp installed on their iOS device can now be opened on that device by the user tapping and holding the attached config file in the email.  This is another feature with additional enhancements planned.

•     NthApp can now be installed on iPhones running the current version of iOS.  Note that the iPhone doesn't have room to create and edit configurations.  It is only able to view configs imported through email.

•     Fixed rare case where duplicate URLs are present in an app configuration and where the second one failed to load because it was no longer observing the change to the cached data.

•     Internal change to protect from loss of changes if the app either crashes or is deactivated during an editing session.

•     Corrected problem where the app configuration automatically received a new version when its cache was modified internally.

•     Deleting the currently loaded app configuration was resulting in a confusing state.  Behavior has been changed so that current configuration cannot be deleted.

•     Missing or unavailable URLs were at times resulting in annoying ads being displayed in their content's place.  Error displays that identify the server or app error are now displayed in the case of a bad URL.

•     Sharing or copying of URLs is now disabled where the creator of an app configuration has set the configuration to "Non-Clonable" - this effectively makes the URL private.

•     Corrected a problem where singleton portfolio items failed to render because of an internal logic error that excluded the draw operation.

•     Recalculating the size of the content cache on the device now reports an aggregate of all content from all app configurations on the device.

Version 1.0.1 (June 29, 2013)

•     Data and image files greater than 20 megabytes in size are detected and rejected to guarantee memory stability.

•     Scratchpad now has a "Show Keyboard" button to allow the user to manually enter text in the scratchpad.

•     In the editor view, the user can now "Calc Cache Size" to estimate the amount of space content is using on the device.

•     In the editor view, the user can now lock or unlock cloning of configurations.  This effectively hides the source of the configuration creator's content.

•     Display of HTTP errors are improved to accurately give feedback when either a client or server error is detected.

Version 1.0.0 (June 05, 2013)

•     NthApp is an iOS app for iPad and iPhone that allows you as the user to configure the main screen of the app to display your own web or server-based content. Or alternately you can display any public-facing content. You can create and save any number of display configurations using the built-in tap and type view editors. Then you can quickly select any saved configuration for viewing.

•     In this current version creation and editing of configurations is limited to iPad because of space constraints on the iPhone. However, you can export your configurations by email and the receiver of the email can import the configuration into either an iPad or and iPhone by tapping and holding the email attachment file. The user then sees a choice to import and view the content of the configuration.

•     The view editors are tap, type, copy, paste capable and most of your content will require a public facing URL. URLs that contain passwords will be ignored by the app. There is a central scratchpad available from the editor where you can batch copy and paste URLs or other text from an email for instance to make configuration creation and editing less tedious and time consuming.

•     There are four basic kinds of views you can select to add to your configuration: Web, Portfolio, List, and Contact. Types of content that can be viewed in Web and Portfolio views are discussed in more detail in the editor “Tips & Pointers” that is available from any editor. Most public content that you can view in a browser can be added from these editors. A list view can be built with any combination of the four views. A contact view URL needs to reference a file that is in the VCard format.