Native Mobile

This feature is an add-on to a standard Skuid subscription and may not be available for all users.

Once a Skuid Platform app, and its routes, have been created, it is possible to generate native mobile packages from that app. Native mobile packages—applications that are actually installed on mobile devices—utilize application and hardware APIs to enhance the functionality of Skuid pages. These mobile packages can be tested through various development tools and deployed to end users through your mobile device management (MDM) method of choice.

Note

Native mobile deployment requires Skuid Platform. The following features are not available for Skuid on Salesforce or for Salesforce1 mobile deployments.

Concepts and Prerequisites

Supported operating systems

Skuid native mobile packages are compatible with Android 4.4+ and iOS 10+.

Icons and splash screens

Icons and splash screens must be generated for a mobile package before it can be built. Skuid handles generating each asset at their various required sizes.

Icons are displayed on the mobile device’s app list, home screen, notification bar, and other places within the devices operating system. Skuid can generate the variety of sizes needed by the mobile device from a file that meets the following requirements:

  • PNG format
  • A dimension of exactly 1024 x 1024 pixels
  • No alpha channels/transparency
  • A max file size of a 1.04 MB

Splash screens are displayed when an application is selected and begins loading. Skuid can also generate the various sizes needed from a file that meets the following requirements:

  • PNG format
  • A dimension of exactly 2732 x 2732 pixels
  • A max file size of a 1.04 MB

Certificates

You’ll need to gather the files used to authenticate the app on your platform of choice. Which files you’ll need, and how you retrieve them, may vary. Once you’ve gathered these files and uploaded them in the mobile package creation process, you will not need to upload them again.

Android

Follow the steps listed on PhoneGap’s documentation to generate a private key.

iOS

To create the necessary certificates for iOS deployment, you must be part of the Apple Developer Program. To build Skuid mobile packages for iOS, you’ll need a p12 file and a provisioning profile. Create an app ID, retrieve a CSR file, convert that into a P12 file, then download the provisioning profile.

Create an app ID

Apple requires an app ID to generate certificates. This is related to the mobile app Id property, which is available after beginning the mobile packaging process in Skuid. For iOS deployments, consider beginning the process of creating a mobile package in Skuid and noting the mobile app Id displayed at the top of the screen.

It’s also possible to use a wildcard ID to obtain basic certificates, though you’ll need the exact mobile app ID for acquiring push notification certificates.

Your app’s specific ID will be important for deployment, but not for obtaining the certificate and provisioning profile.

  1. Navigate to your Apple Developer account page.
  2. Click Certificates, IDs, & Profiles.
  3. Click Identifiers > App IDs
  4. Click +.
  5. Enter an app ID appropriate for your use case:
Using a specific mobile app Id Using a wildcard ID

Enter the mobile app Id value of your app as listed in the app detail screen. It’ll be formatted as follows:

com.skuidsite.examplesubdomain.nameofapplication

Enter an app ID in the following format (where <sub-domain> is the sub-domain of your Skuid site) without underscores or dashes:

com.skuidsite.<sub-domain>.*

So example.skuidsite.com would be:

com.skuidsite.example.*

Note

This wildcard ID can be used for a variety of apps on a single site. When deploying your application, know the native app’s specific ID, which you’ll find after creating the mobile package within Skuid.

Download the CSR file

With this newly created app ID, now create a CSR.

  1. Click Certificates > All.
  2. Click +.
  3. Select App Store and Ad Hoc.
  4. Click Continue.
  5. Follow Apple’s listed instructions to generate and download a proper CSR file.

Once the CSR file is downloaded, it must be used to generate to a P12 file. To do so, follow the instructions listed in Adobe PhoneGap’s documentation in the Generating your p12 certificate or Convert an Apple developer certificate to a P12 file on Windows sections, depending on your operating system.

Note

The passphrase used to generate the P12 file is also used when packaging apps for iOS in the Skuid UI. Remember this passphrase.

Provisioning profiles
  1. Click Provisioning Profiles > All.

  2. Click +.

  3. Select iOS App Developer.

  4. Under the Distribution header, select App Store.

    Note

    Development provisioning profiles are available, but the following steps will assume you’ve selected a production provisioning profile.

  5. Click Continue.

  6. Select the app ID you created.

  7. Select the CSR you created in the last section.

Note

If you prefer to have more granular certificates per each native app, you may also enter the mobile app ID displayed on the native app’s detail page after creation. If so, return to your certificates screen after creating your mobile package and update or create new certificates.

Push notification certificates

If you wish to use push notifications within your application, follow Apple’s documentation to download a Apple Push Notification Services certificate file.

Note

You’ll need to know the exact mobile app Id for your mobile packages before obtaining APNS certificates. See the Packaging section (below) for information on how to obtain this value.

Packaging

After collecting all the necessary certificate files and assets, it’s time to bundle the app as a mobile package for your platform of choice.

  1. Navigate to the app’s detail screen Apps > Wrench Configure. Then, within the Mobile packages pane, click Create.

    Note

    The native app’s mobile app ID, which is used to generate Apple certificates, is displayed at the top of the creation screen. Use this ID to generate your certificates.

  2. Upload your icon and splash screen files by clicking Choose File in the Generate Icon and Generate App Splash Screen panes respectively. Skuid will generate all of the required sizes for these assets once they are uploaded.

    Note

    Splash screen generation may take longer. This is normal.

  3. Click Continue.

  4. The modal will list the files needed to package the app for different mobile platforms. Click Continue to authentication.

  5. Activate the slider for each platform you wish to package for, as well as any native features you wish to enable.

  6. Upload the certificate files and enter the certificate credentials associated with the platform you wish to generate mobile packages for.

    The Apple key passphrase must be the passphrase used to export the necessary iOS certificates.

    The Android keystore passphrase, key alias, and key passphrase values must match the values entered when generating the keystore file in the keytool.

  7. Click Build package.

    Note

    Skuid will automatically generate packages for any platform it has the proper certificates for.

Skuid begins generating any applicable packages. Once the process is complete, Skuid sends an email notifying you whether the build succeeded or failed. If successful, download the packages from the app’s detail page (Apps > Wrench Configure) and click Download Package(s). Any available packages will be downloaded.

Deployment

Android

To a single device (developer testing)

While you may test apps through emulators, testing on actual hardware is always recommended.

The APK file generated by Skuid may be distributed to a single device through various methods (email, file management through USB, downloaded from the Skuid UI directly). Once the APK is on the Android device, the user must enable the proper settings for installing unknown apps.

To organization devices

It’s possible to deploy to devices only within your organization using Google Play’s private apps features. See Google’s documentation for information on how to publish to your organization.

iOS

You must create an application on the App Store Connect system to deploy either on TestFlight or through an MDM deployment strategy. Ensure you have the application’s mobile app ID before beginning this step.

  1. Navigate to to App Store Connect and log in.

  2. Click My Apps.

  3. Click + > New App.

    Note

    Do not choose Mac App or Mac App Bundle.

  4. Enter the necessary app properties:

    • Platform: iOS

    • Name: The name of the application.

    • Primary Language: The primary language used within the application.

    • Bundle ID: If you created an ID that does not have a wildcard, select that ID. If you do have a wildcard, select it, but then add the suffix related to the appropriate mobile app Id.

    • SKU: Enter an identifiable SKU for the application, used for internal reports and record keeping as opposed to user-facing screens.

      Warning

      Ensure this SKU is unique among all of your iOS apps.

  5. Click Create.

After creating this application instance, you must submit the IPA file generated by Skuid using Application Loader. Follow the steps listed in Apple’s Application

To developers

Skuid recommends utilizing TestFlight to test the functionality of native mobile apps. Review Apple’s TestFlight resources and documentation for more information.

To organization devices

It is possible to deploy iOS apps to end users within your organization through the Apple Developer Enterprise Program. Review Apple’s resources and documentation for more information.

Maintenance

Test apps often

Skuid native mobile apps rest atop a variety of technologies. Between operating system updates, Skuid feature updates, and Skuid’s native mobile functionality updates, you may encounter unexpected behaviors. Re-test your apps whenever after Skuid updates or operating system updates for your platform for choice.

Be vigilant if errors do occur, and test to see if any other factors related to the user’s mobile device may be causing errors.

When to rebuild apps

Page changes do not require a rebuild. Changes are automatically propagated.

Rebuild the app if:

  • Updating any existing route—including the default route—to point to a new Skuid page
    • Other pages may be added without rebuilding, but choosing a new page for an app’s default route require rebuilding. You may also freely update the chosen page used within the default route within the App Composer without rebuilding. It’s only when selecting a new page that rebuilding is necessary.
  • You change the app’s icon or splash screen
  • Skuid updates its native mobile capabilities or features
  • You enable/disable push notifications

You do not need to rebuild for the following:

  • Updating Skuid pages themselves in the App Composer
    • Including data sources, themes, component changes. site settings
  • User/profile permissions
  • Adding a new page to the app or deleting an existing page from the app
    • New pages are propagated to users the next time they load the app

Native Mobile Features

Offline mode

Users may access Skuid native mobile apps in offline mode. However they must open each page within the application at least one time while online in order to cache pages and app information before the app will function without a network connection. If a user only visits a few pages before going offline, they may not be able to access the entire application.

Geolocation features

If location services are enabled on the user’s device, then their location may be used for app functionality through either native mobile actions or geolocation merge variables.

Upload files from mobile device

When used within a native mobile app, Skuid’s File Upload component can access the device’s file system for uploads.

Troubleshooting

My app is stuck at the splash screen [[]]

Mobile apps hanging at their splash screen can have various causes. Try these common solutions:

  • Users must start the app at least once while online. Encourage users to verify their network connection and try again.
  • Close the app and restart it. Failing that, try restarting the mobile device.
  • Repackage the mobile app and encourage users to download the update.

Common error messages [[]]

I receive an App Not Installed error when installing a Skuid app on my Android device.

When testing a Skuid native mobile app before deployment, it may be necessary to install it as an APK file. However, this may sometimes fail with an App Not Installed error. To install the app, you may need to disable Google Play Protect. While this is not recommended for production deployments, you may temporarily disable this feature.

To do so, follow the instructions to Turn Google Play Protect on or off from Google documentation.

We recommend re-activating this security feature after testing your application.

Build failed errors

Android Build Error: IOError: You may have attempted to create a mobile package without setting the app’s icon or splash screen. Ensure you have set these assets before building.

iOS App Store Connect Errors

No suitable application records were found. Verify your bundle identifier is correct: This error occurs when you attempt to upload an iOS mobile package before adding its app ID in App Store Connect. Enter the ID and try again.

Icon having Alpha Channels

If you receive errors regarding alpha channels, then that means the asset used for iOS icon generation contains alpha channels, also known as transparency. Update the PNG to remove transparency, rebuild app, and re-download IPA file.

Payload content length greater than maximum allowed: 1048576

This error indicates that the splash screen or app icon assets exceed the maximum file size of 1.04 MB. Try adjust the content or quality of the problem assets to better fit the maximum file size.

Errors when generating keystore file with keytool.

  • keytool error: java.io.FileNotFoundException: name-of-file.keystore (Permission denied): You may be trying to create the keystore in a directory without the right permissions. Try changing to a different directory, like the current user’s Desktop.
  • keytool error: java.lang.Exception: Key pair not generated, alias <name-of-file> already exists: A keystore file exists with the same name. If attempting to create a new keystore file, delete the existing one.