How to Test Progressive Web Apps on iOS devices.

Starting with iOS version 11.3, Apple shipped basic support for PWA on iPhones and iPads, such as service workers and app manifest files. However, only some of the PWA features are supported right now on iOS. In future iOS updates (version 13.0), we expect much better support of PWA features.

Requirements to Run as a Progressive Web App on iOS

  • Website served fully via HTTPS
  • A Web App Manifest for the website with a name or short_name property
  • Service Worker registered with a fetch event handler
  • Display property set to standalone, fullscreen, and minimal-ui

Using Appery.io, you don’t need to worry about these settings as the Appery.io PWA feature supports all of this “out of the box.” For more information please visit our documentation on the feature.

Steps to Install and Test PWAs on iOS Devices

For iOS devices, PWA currently works only on Safari Browsers. Browsers like Chrome for iOS, Firefox Focus for iOS, Dolphin Ghostery, Opera Mini, and Adblock Browser don’t support PWA at the moment. Here are the steps.

  1. Make sure that you have cleared all browsing data.
  2. Visit the website that you have published using the Appery.io PWA feature.
  3. Tap the Share button (at the browser options menu).
  4. From the options, tap the Add to Home Screen option. You will notice an icon of the website or screenshot of the website added to your device home screen instantly.

    Add to Home Screen

  5. Tap the icon from Home Screen, after which the Progressive Web App of your website will be loaded. (You won’t see the Splash Screen and background color which you set upon Manifest right now, as both are not supported on iOS although we are working on bringing such support to Appery.io PWA on iOS.)
  6. In the PWA navigate through some of the web pages you like, then disconnect the Internet on your iOS device, and then close the web app.
  7. After that tap the web app icon again. You will notice that all the pages that you haven’t viewed will be shown by an Offline page that you set up in the service worker within the PWA App Settings.

There are a few limitations, like limited cache capacity (50MB) on iOS right now, but there’s enough for most sites to at least cache placeholder images along with the necessary HTML, CSS and JavaScript to drive a reasonable offline experience. If you need more storage you can build an intelligent caching system to leverage IndexedDB. This can give you up to 500MB of additional storage, which is available to service workers. Check out our tutorial on how to use IndexedDB in Appery.io.

Learn How Technology Can Improve Healthcare Supply Chains with Appery.io

In the past, each hospital department was in charge of ordering and maintaining its own inventory. This approach was inefficient and costly. In more recent times, a centralized supply chain management approach based on numerous process automations has become more prominent. As a result, technology has started to play an even more prominent role in transport and inventory management as well as in supplier relations. Nowadays, hospitals tend to switch to a dedicated all-in-one inventory system.

Our client, a not-for-profit healthcare network that includes hospitals and other medical divisions, recently introduced an Appery.io-based modern inventory system that consists of Par Counting, Express Issue, and Package Tracking applications:

Par Counting

Making sure that items are always in stock is a critical task for a hospital warehouse. With this application, counting of stock items has become much easier. Scanning with a fast hardware barcode scanner, counting per cart, filtering, sorting and focusing on critical items, and offline automatic synchronization are a few key features in the application.

Express Issue

Express Issue automates issuing products from an inventory while simultaneously decrementing the count of processed inventory and charging the department requesting that product.

Package Tracking

Whether it’s a flower bouquet or a vendor track shipment, each package is supplied with an internal barcode to go through the different workflow stages to the addressee. Also, the tracking application allows fast debiting (via a fast barcode scanner and a portable printer), transparent routing, and digital signing on receiving.

Benefiting from Technology

Thanks to the Appery.io platform support for hybrid apps, these applications require next-to-no modifications to run on both iOS and Android devices as well as in Web browsers. This makes the development price tag much lower.

In addition, Appery.io API Express streamlined Vuetura-supported communication as well as cost-effectively integrating these applications with legacy back-end systems such as PeopleSoft, Active Directory, and other databases. Because of this, both operation and maintenance costs are projected to go down. Moreover, the Appery.io out-of-the box offline synchronization feature saved a lot in infrastructure upgrade cost.

Leading in Digital Transformation

As rising expenses threaten the viability of traditional healthcare distribution methods, this healthcare network continues to show the way in digital transformation with its focus on supply chain fundamentals.

Backend Update

We are constantly working to improve our platform, and now we are pleased to announce that the performance of our backend services will increase significantly with the new update, which will be rolled out into production in a few days. We carefully investigated and integrated GrallVM, just finished version 1.0.0-rc14 Alpha and Beta testing, and now we are ready to present a new version of GrallVM 19.0.0!

Some Useful Tips When Working With PWA

Basic Thesis

PWA works only in SSL secured mode. Therefore you need to use URL to your App only with HTTPS protocol.

All resources in your application should be also set as HTTPS.

In case of using at least one HTTP resource, your app will not be considered as a PWA.

Your app should be published on a custom domain. For this, you need to open your app on the “General”  tab and scroll down to “Hosting” options. There you can set your own domain or a subdomain of “.app.appery.io” to host your app.
Note: every time you have made changes in your App you need to click “Publish” button to make it available on the published domain.

PWA Activation

Open Project -> App settings -> PWA.

Click on the checkbox “Enable PWA publishing” to enable PWA in your Appery.io app.

Set  “Label”, “Short label” and “Description” for your PWA application.

Set at least one type of icon for your PWA app. Please note that only appropriate size .png files are accepted as icons in this interface.

Route handlers (rare case)

This part of PWA options is used to control custom resources loading. There are two ways to load resources. By network and by the cache. There is also a combination of these ways.

You can not control Appery.io builtin resources, you can only control custom resources. Let’s try how it works:

  1. Add an image component to your application.
  2. Use custom URL (not from media manager) for this image. Note, it should be HTTPS, as well as all other resources in your app.
  3. Open PWA settings and set appropriate resource URL and needed network strategy.

How to test PWA:

First, run your App:

  1. Open your browser and load your App by using your custom domain URL.
  2. Open browser debugger (usually, by clicking F12 button).
  3. Navigate to debugger “Application” tab.
  4. Click on “/manifest.json” to check your App current manifest JSON file.
  5. Set other parameters on “Manifest” tab. There should be no any errors and warning.
  6. Navigate to “Service workers” tab.
  7. There should be information about current service worker and its’ state. Like “#5557 activated and is running”. It does mean “Service worker with identifier 5557 installed and currently activated”.

If you need to make changes in your App (change label, add button etc.) you should save changes first.

Then click “Publish” App to publish a new version on the current custom domain. Wait until publishing process will succeed.

Update your App in a previously opened window.

In “debugger->Application->Service workers” you will see the current worker is set an old one. And the new worker is installed but is waiting for something. You will notice there are no changes on the page you have made previously.

To activate new service worker you need to click on “Skip waiting” in the debugger.

Close all tabs which are using this service worker in the browser (usually, all tabs with this URL should be closed).
After this, you need to open a new tab and load application URL here again. Then open debugger on “Application” tab and you will see the new service worker active.

Learn How to Show Information in Ionic Pop-ups

In this post, you will learn how to add information to a pop-up in an Ionic application.

Setting Up the App

To start with, let’s create a new Ionic app.

  1. From the Apps page, click Create new app > Ionic, give it a name, and click Create.
  2. Open Pages and go to Screen1. Under the DESIGN tab, add a Text component to the page, select it, and define its Text property as Username: {{username}}.
  3. Next, drag and drop an Input component to the page and set username as its ng-model.
  4. Add one more component to the Screen1 page, a Button with Text: Edit and ng-clickedit().

   The page UI should look like this:

  1. Now, in the Project view, open the Project > Model tab, create a new model of Object type, and name it Global. Add a string parameter to it named username
  2. Next, add a new variable, name it global, and select Global for Type under the SCOPE tab of the index page: 
  3. After that, switch to the Screen1 page, and under the SCOPE tab, add a new scope function named edit and provide it with the following code where the added global variable in the template of the popup is defined:
    $scope.global.username = $scope.username;
    var $ionicPopup = Apperyio.get("$ionicPopup"); 
    var alertPopup = $ionicPopup.alert({ 
        title: 'Edit username',
        template: '<input type="text" ng-model="global.username"/>',
        scope: $scope,
         buttons: [{
            text: 'OK',
            type: 'button-positive',
            onTap: function() {
                $scope.username = $scope.global.username;
                return;
            }
            
        },
        {
            text: 'Cancel',
            onTap: function(e) {
                return;
            }
        }]});

    Note, that in the code, any title can be provided and any HTML code can be added for template.

And…we are done!

Using the App

Now, to check the app, click Test. In a new window, put in Jane for Username and click Edit. The popup with this username will appear:

To enter a different name, just type it in and confirm by clicking OK. The local variable will be modified and the output can be instantly seen:

BTW: If you are into customizing your UI, here is a piece of good news. You can easily customize the looks of your pop-up:

Ionic 4 Is Coming!

We would like to provide you with information about our May release. We have only one new feature, but what a feature—Ionic 4!


The latest, most powerful version of the popular framework will be available for Appery.io next week. It’s packed with exciting new features that made waiting worthwhile! Appery.io Ionic 4 framework supports the latest Angular version 7 and Cordova 8. It will be released as a beta, because we plan to continue working on it and add new features and components.

Please note that Ionic 3 support will be canceled once the Ionic 4 beta period is finished, but before then you’ll have plenty of opportunity to update your Ionic 3 projects to version 4.

 

New Tutorial on Using IndexedDB to Work with Images Offline

A piece of good news for the users who were interested in combining Login-Registration App and IndexedDB Storage but lacked information on how that can be done practically!

The Appery.io team would like to bring to your attention that a new tutorial has been published that provides step-by-step instructions on building an app that will get user images from the custom Files collection and make them available when the device is in offline mode.

The tutorial describes in details how one can save a set of images from Appery.io Files collection into IndexedDB cache with further making them available to users when the app goes offline.

Besides, it presents the list of functions provided by the IndexedDB Storage plugin which was introduced in Appery.io builder for your convenience:

A very interesting detail: this sample app can be published either as a regular iOS and/or Android app or as a PWA website.

Enjoy your programming with Appery.io!

How to Save Camera Images in an Ionic App

This short tutorial will show you how to save images from your device camera into Appery.io database.

  1. Create a new Ionic project and database.
  2. Add the Camera Service plug-in and File Upload App plug-in into the project by going to Project > CREATE NEW > From Plug-in, in the Builder.
  3. Create a page CameraPage with 2 buttons Camera and Upload with corresponding attributes and the component Image to display the result:
  4. On the Scope tab add this code for the Camera button:
    var requestData = {};
    Apperyio.get("Camera_getPicture")(requestData).then(
    function(success){
        $scope.im.image = success.image;
        $scope.$apply(); 
    },
    function(error){
    });

  5. Then, add this code for the Upload button:
    function dataURLtoFile(dataurl, filename) {
    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    while(n--){
    u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, {type:mime});
    }
    
    var filepointer = dataURLtoFile($scope.im.image, 'test.png');
    $scope.files.push({filename:"test.png", filepointer: filepointer});
    
    
    if ($scope.files.length === 0) {
    alert('No file for upload');
    return;
    }
    
    var requestData = Apperyio.EntityAPI('FileDB__files_upload_service.request');
    var user_scope = $scope.user;
    var files_scope = $scope.files;
    var formData = new FormData();
    requestData.data = _.pluck($scope.files, 'filepointer');
    
    Apperyio.get("FileDB__files_upload_service")(requestData).then(
    
    function(success){
    alert('All files has been successfully uploaded.');
    },
    function(error){
    
    },
    function(notify){
    
    });
  6. Finally, enter tour database_id and master_key in  FileDB_settings:

And, that’s it! (Please remember that this app should be tested on a real device.)

Changes to Appery.io Tester App for iOS

Our Appery.io Tester App for iOS has been updated and now includes the new Cordova version.

Release Highlights:

  • Cordova iOS 4.5.5
  • Added Ionic 3 support
  • fix minor bugs

Update or re-install Appery.io Tester App on your device. In our upcoming Appery.io release, we will update both Android and iOS Cordova platforms versions.

What’s in the March 2019 Platform Update (Psssst… PWAs)

Our March platform update rolls out on March 10. It will be focused on support for progressive web apps (PWAs).

PWAs are a new software development technology. Like other hybrid solutions (Cordova, Electron, etc), PWAs work seamlessly on desktop, mobile, and tablets using a single source codebase.

“Progressive web applications (PWAs) are web applications that load like regular web pages or websites but can offer the user functionality such as working offline, push notifications, and device hardware access traditionally available only to native applications. PWAs combine the flexibility of the web with the experience of a native application.” © Wikipedia

If you are still using a classic hybrid application, you have to  make a build for every platform you want to support and then distribute your application to an app market like Google Play or App Store. That means you need to register a developer account, buy platform-specific hardware and software, build and test your application for every platform, and then publish your application to the market. Once done, your application can be removed from the application market by a vendor if it doesn’t pass their review processes.

A PWA has the advantage that you are the only person who manages your application. All you need to publish your application is to be the host. If you are an Appery.io customer, you can do this in just a few clicks. Below, we describe how to do this.

Here is a checklist from the Google Developers site that walks you through how to convert existing apps to PWAs. With Appery.io, it’s not necessary to do this, but this is a helpful resource just in case.

We have added a PWA option for all project types supported by Appery.io. You don’t need to change any code in your existing app to make it a PWA.

Just open your app in the AppBuilder and configure the PWA settings like application name, icon, background color, etc.

The next step would be publishing your app.

PWA App Publishing.

Now, anyone who opens your app published in a web browser on a mobile device will be able to add it to the launch screen without installing it from the application market.