# Utilities

*TOOLS/APPWIZARD | Generate an Android or iOS App

## Description

This utility is used to Generate an Android or iOS App for your iNomads application or other Web-based content. The Generated App will have the name and logo specified, and it will be a full screen view of the Web content.

The app provides the following capabilities:

- Supports mobile device screen orientation switching
- Scan barcodes with the mobile device camera
- Get mobile device location via GPS
- Viewing of PDFs
- Downloading/Uploading of images and files from the mobile device

#### Important Note:
PVX Plus Technologies does not publish the generated app to an app store. This utility provides the file(s) of the generated app so that the developer can publish the app. This allows the developer to control the marketing materials and the monetization of the app.
Both Google and Apple require you to have a developer account, which is not free, in order to upload/publish on their app stores.
• To sign up for a Google Play developer account, use this link: Google Play Developer Account.
• To sign up for the Apple Developer program, use this link: Apple Developer Program.

After generating an app, the next steps are to Upload to an App Store, Test the App, and then Publish the App.

(The Generate an Android or iOS App program was added in PxPlus 2019.)

## Generate an Android or iOS App

To access the Generate an Android or iOS App graphical interface, use one of the following methods:

Location | Method
From the PxPlus IDE Main Launcher | Expand the Web Deployment category and select Generate an Android or iOS App.
From a Graphical Device | Run the *tools/appwizard program.

The Generate an Android or iOS App window is displayed.

If you are not on a graphical device or if automation is desired, it is possible to generate an app programmatically:

> CALL "*tools/appwizard;send_request", dest_email$, app_type$, app_id$, app_name$, version$, icon_path$, icon_bkg_clr$, target_url$, result$

The fields/arguments are:

Field/Argument | Description
App Type (app_type$) | Mobile OS on which the generated app will run. Valid values are Android or iOS (case insensitive).
Destination E-mail (dest_email$) | E-mail address that is to receive notification stating that the app has been generated, along with a link to download the encrypted ZIP file containing the app file(s) and the password to decrypt the ZIP file.
App ID (app_id$) | Unique ID of the app. Must be a unique ID on the app store you want to publish the app on (case sensitive). The app ID is usually done in a reverse DNS style; i.e. com.mycompany.myapp. For Android, the ID must begin with a letter and contain at least one period. It may only contain letters, numbers, periods and underscores. For iOS, the ID has a minimum length of 1 and a maximum length of 155. It may only contain letters, numbers, periods and hyphens.
App Name (app_name$) | Display name of the app. Maximum length of 50 characters (Android) or 30 characters (iOS).
Icon (icon_path$) | Path to an image to use as the app icon. All standard image formats, as well as Transparency, are supported.
Icon Transparency Color (icon_bkg_clr$) | iOS app icons do not allow transparency. If the App Type is iOS and the icon image used Transparency, this utility will convert the image to use this color in place of the transparency. The icon_bkg_clr$ argument accepts Hex color values; e.g. #DC143C would be Crimson (shade of Red).
Target URL (target_url$) | URL that the app will display in the full screen Web view. This will usually be an iNomads URL; however, it can also be a URL to some other Web content. #### Important Note: You must specify http:// or https:// in your URL. Using a non-secure http:// URL may result in an untrusted SSL certificate warning on Android. A secure https:// URL is strongly recommended.
Version (version$) | Version number that the generated app should display to the user. Increase the version number if generating a new version of a previously generated app; i.e. the App ID is the same. Use the following format: num.num.num. (Default value is 1.0.0.)
result$ | Returns the result of the app generation. If successful, result$ will be "SUCCESS". If unsuccessful, it will contain an error message.

Select the Create button to generate the app.

App generation is not instantaneous and can take up to 15 minutes. After generating an app, the utility sends an e-mail to the destination e-mail address provided stating that the app was generated. The email provides a download link to an encrypted ZIP file containing the app file(s), along with the password to decrypt the ZIP file and extract the app file(s).

## The Generated App

The generated app will be a full screen view of the iNomads app or third party Web app.

Forward and Back history navigation is disabled since this app is designed for iNomads apps, and navigation should be done within the iNomads panels. If the mobile OS Back button is selected, a prompt will display, asking if you want to exit the app. You can either cancel this and remain in your app, or respond Yes to exit your app.

Barcode scanning is slightly different in iOS compared to Android:

• | In iOS, barcode scanning integrates directly into the camera of the mobile device. The interface is simply the display of the camera, and if you focus on a barcode, it will be scanned. Supported barcode types are Aztec, Code 39/93/128, Data Matrix, EAN-8/13, ITF, PDF 417, QR Code, UPC-A/E.
• | In Android, barcode scanning is handled by integrating with the Barcode Scanner app; therefore, the app must be installed for barcode scanning to work. This makes it easier to use the interface and expanded barcode type support provided by Barcode Scanner apps. Supported barcode types are Aztec, Codabar, Code 39/93/128, Data Matrix, EAN-8/13, ITF, MaxiCode, PDF 417, RSS-14/Expanded, QR Code, and UPC-A/E.

See Bar Code Reading.

The generated app requires permissions to access the camera, location and storage for your mobile device. The mobile OS may request that you enable these permissions the first time that the app tries to use the camera, get the current location, or upload/download files.

## Upload to an App Store

Android

The Android app is uploaded to the Google Play Store using the Play Console.

Step | Description
1. | A Google Play Developer account is required. Sign up for a Google Play Developer Account if you have not already done so.
2. | From the machine where the generated app files have been extracted, visit the Play Console Web site. Sign in using a Google Play Developer account.
3. | From the Play Console, create an application. For details, visit the Google Support: Play Console Help - Create an App Web site.
4. | From the newly created application, create a release and then upload the generated app AAB or APK file. For details, visit the Google Support: Play Console Help - Create a Release Web site.

iOS

The iOS app is uploaded to the App Store using App Store Connect.

Step | Description
1. | Enrollment in the Apple Developer Program is required. Sign up for the Apple Developer Program if you have not already done so.
2. | Go to the Apple Developer: iOS Provisioning Portal. Sign in with an Apple ID that is enrolled in the Apple Developer Program.
3. | From the iOS Provisioning Portal, create an app/bundle ID that matches the one used to generate the app.
4. | Go to App Store Connect. Sign in with the same Apple ID used for the previous steps.
5. | From the App Store Connect home page, you can Add a New App. When adding the new app, make sure that you select the app/bundle ID you just created to match the one used to generate the app. #### Note: From a macOS machine, use Launchpad to open the Application Loader program. If the Application Loader program is not available, go to the App Store and install Xcode, which will install the Application Loader program.
6. | From the Application Loader program, select the generated app IPA file to upload. For details, visit the Upload Your App Binary Files with Application Loader Web site.

#### Note:
When the app is uploaded, Apple puts the app through some automated tests. A delay of up to of 30 minutes may be expected before the uploaded app is available in App Store Connect.

## Test the App

Before publishing the generated app to an app store, testing is recommended to help ensure that the generated app meets expectations.

Before an app is generated, you can test your iNomads application and/or other Web content running as an app by using the App Launcher for Android and iOS.

Android

To test the generated Android app, the following two methods are available:

Method 1: | The easiest way is to install the generated APK file, found in the ZIP, directly onto an Android device. This method requires that installing apps from unknown sources be enabled on the Android device. For details, visit the How to Enable Unknown Sources Web site.
Method 2: | This method involves releasing the app for internal testing via the Play Console. Make sure that the generated app has been uploaded to the Play Console. See Upload to an App Store - Android above. From the Play Console, create a new release for internal testing. For details, visit the How to Set Up a Test Release Web site.

iOS

The only way to test the generated iOS app is to use TestFlight. Make sure that the generated app has been uploaded to App Store Connect. See Upload to an App Store - iOS above.

From App Store Connect, create a test group, assign testers to the group, and then pick the uploaded app for testing. For details, visit the How to Set Up TestFlight Web site.

#### Note:
When the app is added to a testing group, Apple puts the app through a review process. A delay of one to three days may be expected before the app is sent to testers.

When testing the generated app:

- Confirm that the icon looks sharp and all of its features are easily visible, including any text.
- Make sure that the app display name is correct and is readable.
- Check that the app goes to the correct URL and that it loads and functions correctly.
- Try the app on several different mobile devices with different screen sizes; i.e. small smart phone, big smart phone, and tablet.

If any issues are found, you can re-generate the app using the same app ID but changing what is required; i.e. picking a higher resolution icon image or shortening the app display name.

## Publish the App

Before you publish the generated app, you will need to fill out information about the app so that the app store can create a listing for the generated app. The following information usually needs to be completed:

- Name
- Short description
- Long description
- Category
- Content rating
- License agreement
- Privacy policy
- Screenshots and marketing images/videos
- Pricing
- Countries to make available

Android

For an overview, visit the Publishing an App to the Google Play Store Web site.

To publish the app, create a production release via Play Console. Make sure that the generated app has been uploaded to the Play Console. See Upload to an App Store - Android above.

From the Play Console, create a new release for production. For details, visit the How to Create a Production Release Web site.

iOS

For an overview, visit the Publishing an App to the App Store Web site.

To publish the app, submit the app for review via App Store Connect. Make sure that the generated app has been uploaded to App Store Connect. See Upload to an App Store - iOS above.

From App Store Connect, select the uploaded app and submit it for review. For details, visit the How to Submit an App for Review Web site.

#### Note:
The Apple app review process usually takes between one to three days.

## See Also

iNomads
iNomads Classes
Bar Code Reading