App Store Guide

The scope of this article are the technical aspects and the required steps to publish your own App for innovaphone myApps App Platform on the innovaphone App Store.

Table of Contents

Prerequisites
An overview of required steps.
App-ID, Texts and Icons
App Store related metadata.
App Binaries
App binary files.
Local App Store Instance
Local developer App Store instance required for deployment.
App Entry in the Local App Store
App Entry in the local App Store.
Publish a new Version of the App
Publishing of a new version of the binary files.
Notify innovaphone 3rd-Party Team
Notification request for App Review and Publishing.
Troubleshooting
Troubleshooting hints.

Prerequisites

In order to successfully publish an App a number of necessary preparation requirements must be fulfilled:

In the course of this article, we will take a closer look at the individual steps.

App-ID, Texts and Icons

This chapter covers various settings that are relevant for an App Store entry.

App-ID

As a unique identifier of your app in the innovaphone App Store an App-ID must be defined. The App-ID must contain a manufacturer name followed by the app name, separated by a hyphen, e.g.: company-application . The allowed characters for the App-ID are ASCII letters, hyphens and underscores.

The App-ID is also used in the folder structure of a web server to point the App Store to the relevant files of the App and in the naming scheme of the license of the App.

Manufacturer

The manufacturer ID is defined while running through the innovaphone SDK Setup under the "source-code" company name field and is used to create new App projects in Visual Studio in the App templates for C++ and JavaScript. This ID is also used as prefix in the App-ID, App binary name etc.

Texts

An App Store entry contains various text fields that must be filled with relevant information:

Icons

Despite the icons used in the App itself for the myApps UI, an additional icon for the App Store is required. This icon must have a resolution of 110x110 pixels and be in PNG format.

App Binaries

The binaries of the Apps have the following properties, which are relevant in connection with the publication on the App Store and are defined at the compilation time:

App Project Name

We recommend to use preferably short, lowercase strings as name for the Visual Studio project, while creating an App from template. This string will be used later in URLs and in the folder structure of the App Store related web server, so it should contain only URL-safe characters.

Instead using a space in the name, consider to use a dash and eliminate any other non-alphanumeric characters.

For example, instead of using Fancy App as project name, consider to use fancy-app or even better fancyapp

At the end the project name, prefixed by the manufacturer name, will be used for App-ID, App License, App Binary Name etc.

Build Number

The build number should be an incrementing integer number. This number will be used in the file structure of the App Store. To avoid increasing the number of digits in the build number, we recommend to start from higher numbers like 1000.

For every consecutive version of the App, that should be released, a larger build number should be used.

Release State Label

The Release State Label is a human readable label of a version, that can be identified by a user and should be unique in the domain of a major SDK release version.

E.g. a release state label hotfix3 in V13r2 represents a third hotfix for the App, that was build for V13r2 App Platform

Target Platform and SDK Version

The binaries should be built using current service release of the innovaphone SDK V13r2 with following platforms as targets for the build:

This will make sure the App can be used on all types of AP capable innovaphone Gateways and Virtual Appliances.

Building the App Binaries for the Release

In contrast to the development builds via Visual Studio (Build solution) the binaries for the release on the App Store should have set correct values for the buid number, a release state label and manufacturer prefix in the file names.

The Visual Studio project created from a template in the innovaphone SDK contains a batch script build-release.bat that can be used to build the App binaries with specific build numbers and release state labels for all platforms.

For example, to build release binaries from an App demoapp with the build number 1002 and release state label sr2 use following command:

C:\projects\demoapp\demoapp>build-release.bat 1002 sr2 company
    

The third command line parameter should match the Manufacturer value used while creating the app entry. If set properly in the bat file directly, the third command line parameter can be omitted.

Execute the script from the command line in the project folder. The resulting builds will be placed in the project folder, in the subfolder release in the corresponding platform subfolders (arm, arm64, x86_64).

It is recommended to perform Clear solution in the Visual Studio before running the script.

Binaries for JavaScript Runtime based Apps

In a special case of a JavaScript Runtime based App a so called generic binary (same for all JavaScript Runtime Apps) is supplemented by a custom ZIP file (httpfiles.zip) with a JavaScript implementation of the App. For the JavaScript Runtime based App Service the generic App binaries from the current service release should be used. This can be achieved by installing SDK from the current Service Release.

The JavaScript Runtime binaries that are used to build a JavaScript Runtime App are located in the sub-folder jse of the Visual Studio Project.

In order to update a JavaScript Runtime version, download the current JavaScript Runtime App from the innovaphone App Store and place the binaries into the jse of your project (replace older binaries).

Debug Files

While building a binary, a separate .debug file for GDP is created. This file is useful to analyse the crash dumps, to be able to attach a debugger and see the exception and the stack trace.

However, debug files enables easier reverse engineering of your binaries. Please consider it, while deciding to deliver debug files with binaries, or not.

Local App Store Instance

A local App Store instance is used to prepare an App Store entry for your App and to deploy it to the innovaphone Release App Store. It must be hosted at an innovaphone App Platform and be reachable via an HTTPS URL.

This chapter provides a detailed description of a process of setting up a local App Store. In case a local App Store is already running or a hosted App Store is used, the current chapter can be skipped.

Prepare Local Web Server

The App Store relies on a web server which should be reachable from the App Store instance via HTTP, in order the files for the App can be fetched into the App Store instance.

A following folder structure is expected by the Store App:

<http-path-to-root-folder-of-the-app>/<build-number>/<platform>/<icon-binary-debug-zip-file>
    

The file tree with essential folders:

+-- build-number
|   +--app_files-file
|   +-- platform-folder
|       +-- sub-folder
|           +-- binary-files
    

The file tree of the app folder should look like this:

+-- 1001
|   +-- innovaphone-demoapp_files
|   +-- arm
|       +-- innovaphone-demoapp
|           +-- innovaphone-demoapp
|           +-- innovaphone-demoapp.png
|           +-- innovaphone-demoapp.debug
|   +-- arm64
|       +-- innovaphone-demoapp
|           +-- innovaphone-demoapp
|           +-- innovaphone-demoapp.png
|           +-- innovaphone-demoapp.debug
|   +-- x86_64
|       +-- innovaphone-demoapp
|           +-- innovaphone-demoapp
|           +-- innovaphone-demoapp.png
|           +-- innovaphone-demoapp.debug
+-- 1002
|   +-- innovaphone-demoapp_files
|   +-- arm
|       +-- innovaphone-demoapp
|           +-- innovaphone-demoapp
|           +-- innovaphone-demoapp.png
|           +-- innovaphone-demoapp.debug
...
    

For example, the icon file should be reachable via following URL: http://web.example.com/appreleases/demoapp/1002/arm/innovaphone-demoapp/innovaphone-demoapp.png

The file innovaphone-demoapp_files contains a comma separated list of binary files of the App.

For example (notice no spaces between the filenames):

innovaphone-demoapp,innovaphone-demoapp.debug,innovaphone-demoapp.png,httpfiles.zip
    

Setup Local App Store

The local App Store App must be installed on an innovaphone App Platform as all other apps.

At the moment the latest version of the App Store App (13r3 beta1), that is compatible to the official innovaphone App Store, is available on the Beta Store (https://store.innovaphone.com/beta/download.htm). Therefore, to be able to install this version of the App Store App the App Store URL on your App Platform must be set to https://store.innovaphone.com/beta/download/apps.json (configurable under Settings on AP Manager).

To install the App Store App on your local App Platform, perform following steps:

start an app store instance

When an empty Apps screen appears the App Store is ready to be equipped with your app.

App Entry in the Local App Store

In this example an App with the App-ID innovaphone-demoapp is used.

To add a new App Store entry, click on plus (+) symbol in the right top corner of the App Store App. The Add new app window will appear.

In the Edit App window provide the corresponding settings for the App:

Add an App Entry

Click on the Confirm button in the upper right corner of the Add new app window. In case values for Release, Build and Label was provided, the App Store App will fetch the files for the release from the web server (if not, ignore the error message).

After the app files are transferred you should see the app entry in the App Store:

Add an App Entry

Try to install the app from your app store and check if it is installed correctly.

To be able to install your App from the local App Store you have to configure the AP Manager to use your local App Store instance instead of the official innovaphone App Store. Find out the URL of your local App Store Instance first - check the settings of the App Store instance (select instance and click on Edit). In the Edit instance UI dialogue you will see the actual URL used to reach this instance. For example, if the URL pointing to the Store App is following: https://172.16.0.123/example.com/ExampleAppStore/innovaphone-appstore . The corresponding apps.json URL would be following: https://172.16.0.123/example.com/ExampleAppStore/download/apps.json

The corresponding App screen of an installed App in the AP Manager should show correct information about version of the App (sdk-version, build number, release state label):

Add an App Entry

Publish a new Version of the App

The new versions of a released App can be added to an app entry in the App Store App by placing the App files in the corresponding folder on the web server (see chapter Prepare Local Web Server).

The subsequent releases of the App must have higher build numbers, than previous releases (e.g. 1000, 1001, 1005, etc).

To upload a new build, click on Update button in the upper right corner of the App Store App:

Update Notification

In the Add new official build window tick on the app, that will be released, and provide values for Release, Build and Label:

Update Notification

To fetch the new version from the web server, click on Upload button.

The upload will start and will take few minutes, depending on number of files and their size:

Update Notification

After upload is finished you should be able to see new version of the App below the App Entry:

Update Notification

Only the latest version is displayed. To see older versions, click on the arrow button in the lower right corner of the App Entry.

Notify innovaphone 3rd-Party Team

After you have tested your App Release using your own App Store and your App Platform a notification to 3rd-party@innovaphone.com must be sent in order innovaphone Team can review and publish your App on the official innovaphone App Store.

Prior publishing a new App on the innovaphone App Store, innovaphone team take the app through an App Review process to make sure, the App itself and the App Entry in the App Store meets the minimal technical requirements for publishing.

Troubleshooting

Missing app files

Make sure in every build folder a innovaphone-demoapp_files file exists and contains all the files, that should be released. Usually it should contain at least the binary file of the app, icon file, debug file and httpfiles.zip (for JS Runtime apps).

App Store cannot locate files even if they are on the web server

The Path URL of the App Entry should not contain a trailing slash (e.g. http://web.example.com/apps/demoapp/ is incorrect).

Build number and release label are incorrect

Before building the App for release make sure to run Cleanup Solution in the Visual Studio.