Skip navigation
All Places > AppStudio for ArcGIS > Blog
In order to improve the security and performance of Android apps, Google continuously updates its policies for apps published on the Google Play store. With the recent changes announced in this blog post https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html, Google has laid down a road map for the target API level requirement for Android apps.
 
Target API level requirements for Android Apps
  • From August 2018, Play store requires new apps to target Android API level 26 (Android 8.0) or higher in order to be published.
  • From November 2018, all apps, including updates to existing apps, need to target Android API level 26 (Android 8.0) or higher to be published in the Play store.
 
 
How does this impact AppStudio users? 
If you have recently tried to submit your apps to Google Play store, you might have encountered the following warning message:
 
In order to get Android apps built using AppStudio to meet the requirements of the Google Play store, we have updated our cloud Make servers to target Android API level 26 by default for Android apps. If the Play Store submission for your app has failed because of the target API level requirement, please rebuild your app using the Make tool in AppStudio and then submit it again to the Play Store. 
Please note that from August 2018, the Google Play Store only requires new apps to target Android API level 26. However, if you already have apps that are published in the Google Play Store with the target API level below Android API level 26, and plan to publish updates to them, you can still do so until the 1st of November 2018. After this date, any updates to existing apps also need to target API level 26. In this case, you will need to rebuild your app with AppStudio 3.0 or later to fulfill the requirement of the Google Play Store.
 
I hope this has been helpful in getting your Android apps to the store, and we look forward to making your experience with AppStudio better.

Summary

 

Consider a project which uses a SQLite database.

 

Over time requirements changes. We may be forced to change the schema of that SQLite database.

 

Unlike other RDBMS, SQLite doesn't allow you to add, modify or delete columns in a table after a table is created. You will be required to export the data, recreate the schema, then import the data. Such data migration exercises requires scripts to be built with attention to detail to ensure there is no data loss during data migration.

 

You can future proof your schema by storing data as JSON. AppStudio's SqlScalarFunction helps optimize the use of JSON.

 

Scenario

 

You've been tasked with creating a Geographic Quiz app.

Version 1 will ship with a set of countries and we want to quiz the user their knowledge of capitals.
Version 2 will ship with population and we want to quiz the user to rank countries in order.
Version 3 will ship with currency conversion quiz.

 

Initial App

 

The following is a sample app which is an initial implementation of Version 1. We will deconstruct this app and explore how it could handle the future requirements.

 

import QtQuick 2.7
import ArcGIS.AppFramework 1.0
import ArcGIS.AppFramework.Sql 1.0

Item {
    property FileFolder sqlFolder: FileFolder { path: "~/ArcGIS/Data/Sql" }

    ListView {
        id: listView
        anchors.fill: parent
        anchors.margins: 10
        delegate: Row { spacing: 10; Text { text: name } Text { text: capital } }
    }

    SqlDatabase {
        id: db
        databaseName: sqlFolder.filePath('countries.sqlite')
        SqlScalarFunction {
            name: 'json_value'
            method: function (json_text, key) { return json_text ? JSON.parse(json_text)[key] : null; }
        }
    }

    Component.onCompleted: {
        db.open();
        db.query("DROP TABLE IF EXISTS countries ");
        db.query("CREATE TABLE IF NOT EXISTS countries (json_text TEXT)");
        db.query("CREATE INDEX countries_name ON countries ( json_value(json_text, 'name') COLLATE NOCASE )");
        db.query("INSERT INTO countries VALUES (:json_text)", { json_text: '{"name":"United States", "capital":"Washington D.C."}'} );
        db.query("INSERT INTO countries VALUES (:json_text)", { json_text: '{"name":"Australia", "capital":"Canberra", "population": 24130000}'} );
        db.query("INSERT INTO countries VALUES (:json_text)", { json_text: '{"name":"France", "capital":"Paris"}'} );

        var sql = [
            "SELECT json_value(json_text, 'name') as name, ",
            "       json_value(json_text, 'capital') as capital ",
            "FROM   countries ",
            "WHERE  name like 'United%' "
        ].join("\n");

        listView.model = db.queryModel(sql);
    }
}

 

Schema

 

You see the schema for our app is simply:

 

CREATE TABLE countries
(
    json_text TEXT
)

 

 

 

In Version 1, we want json_text to be a JSON string with the country's name and capital defined. To preview Version 2 one of the records already has population defined as well.

 

Unpacking JSON with SqlScalarFunction

 

We have a SqlScalarFunction defined which implements:

 

 

function json_value(json_text, key)
{
    return json_text ? JSON.parse(json_text)[key] : null;
}

 

 

 

So that `SQLite` can use this to unpack a JSON string and retrieve a value by its key.

 

Indexing and Querying

 

SQLite allows one to create indexes on expressions. This means we can create an index on a key extracted from the JSON string. This feature is incredible. It means we are effectively caching an extracted value so that means we can avoid repeated calculation.

 

CREATE INDEX countries_name ON countries ( json_value(json_text, 'name') COLLATE NOCASE );

SELECT json_value(json_text, 'name') AS name,
       json_value(json_text, 'capital') AS capital
FROM   countries
WHERE  name LIKE 'United%';

 

When you check the query with `EXPLAIN QUERY PLAN` we see that it is using the index:

EXPLAIN QUERY PLAN
SELECT json_value(json_text, 'name') AS name,
       json_value(json_text, 'capital') AS capital
FROM   countries
WHERE  name LIKE 'United%';

SEARCH TABLE countries USING INDEX countries_name (<expr>>? AND <expr><?)

 

Note that a collating sequence must be specified else `LIKE` where clauses will yield a full table scan.

 

Planning

 

When planning for Versions 2 and Versions 3 of the app, you'll appreciate that we can reuse the existing SQLite database and just add or update records within. We can easily drop / create indexes to accommodate new fields and new app requirements.

We are excited to announce the release of AppStudio for ArcGIS 3.1 Beta.  Downloads are available through the Early Adopter Community and we encourage you to participate in the beta program to try out new features and enhancements, and report bugs.  Your feedback will greatly help us improve AppStudio and deliver a stable and high-performance product for everyone.  
 
Disclaimer: Do not build apps to be used in production or submit to app stores using the Beta software.

 A few of the highlights include: 

  
Desktop UI enhancements 
We have UI updates to AppStudio Desktop based on Esri’s Calcite style standard to keep visual consistency across Esri’s products.  For example, the New App button was moved down to the main gallery area, and the header and side panel border width was increased.   AppStudio Desktop’s Settings tool has also received a UI/UX revamp.  It's easier than ever to use the Settings tool to navigate and find all the options and settings organized into sections.  Also as part of redesign, the contents of Advanced Settings dialog is now available and integrated into the Licensing, Platforms & Advanced sections.
      
          
  
Upgrade ArcGIS Runtime to 100.3 
The ArcGIS Runtime version has been upgraded from 100.2.1 to 100.3, which enables you to take advantage of new functionalities, enhancements and bug fixes received in ArcGIS Runtime 100.3. 
 
Upgrade Android API level to 26
With AppStudio 3.1 beta, Android build tools have been upgraded from API level 23 to 26.
 
Enhancements for Background Location (Android)
Android 8.0 puts a restriction around background processes that it can run for at most 15 minutes since the app goes to background. We have made significant tweaks to overcome these operating system level constraints and we are excited to announce that Background Location on Android is now supported using Foreground Services. A Notification is displayed when the app enters background state and stays visible until you close the task. However, note that the OS may still decide to terminate this task if the device is under tremendous memory crunch from other apps on the device. 
 
Enhancements for Local Notification
Local Notification on Android 8.0+ now supports Notification Channels. Few optimizations went into the underlying iOS stack as well.
 
Support for Bluetooth Low Energy (BLE) devices 
We have added the following NEW components into AppFramework Devices plugin to support communication with Bluetooth LE devices. 
 
  • BluetoothLEDevice
  • BluetoothLEService
  • BluetoothLECharacteristic
  • BluetoothLEDescriptor
  • ServiceListModel
  • CharacteristicListModel
  • DescriptorListModel
 
You can now create AppStudio apps that have the ability to discover and connect to Bluetooth LE devices, discover services, and read or write characteristics for devices that support it. 
Note: If you use these in your app, you will be able to see it on your device using the new Player available via beta testing or if you build the app using cloud make of the AppStudio Desktop beta.
 
Support for cryptographic hashes
CryptographicHash and MessageAuthenticationCode components have been added to the AppStudio AppFramwork to provide a way to generate cryptographic hashes or hash-based message authentication codes, which can be used to verify the integrity of networking requests and responses. 
 
Enhancements for Position and Devices plugins
AppStudio’s 3.0 release introduced two new plug-ins, Positioning and Devices, allowing you to create an app that interacts with high - accuracy GPS receivers.  Work has continued to improve these two plugins with many performance and stability related bug fixes and enhancements, such as DeviceDiscoveryAgent crashes issue on iOS.  A new property, pairingStatus was also introduced to the SerialBluetoothDevice component, which returns the pairing status of a Bluetooth device. Notice that the GNSS Info sample app include supporting for high-accuracy GPS receivers.  You can download and check the source code through AppStudio Desktop 3.1 (Beta).   
 
Email Composer 
A new Inter-App Communication plugin has been added to AppFramework. This plugin includes the EmailComposer component, allowing you to launch an email client with a pre-filled draft email.  You can modify, delete, save, or send this draft email.  
 
Check Capability 
We have added a new checkCapability method into the AppFramework to check if your device has granted critical permissions such as Location, Storage, Camera, and Microphone. 
 
Secure Storage Enhancements
Secure Storage has introduced two new properties - maximumValueLength and maximumKeyLength, allowing you to determine the limit on the length of the key and value, with these property, your apps can now take full advantage of device limit.  Note that previously the maximum value and key size was 214 characters by default.  
 
API references of Bluetooth LE related components, CryptographicHash, MessageAuthenticationCode, Email Composer, and Check Capability are available at Qt Creator Help documentation included with the AppStudio Desktop 3.1 (Beta) install.       
  
A more comprehensive list of new features and enhancements can be found in the Early Adopter community website.  
 

Getting Started 

The beta program is open to anyone. You can join our Early Adopter Community to get access to the latest versions of AppStudio 3.1.
 
Download AppStudio Desktop 
You can download the beta version of the AppStudio Desktop 3.1 here.
 
Download AppStudio Player (iOS)
Please leave your email in this EAP thread so that we can add you to Apple’s TestFlight program to download AppStudio Player 3.1 (Beta).
 
Download AppStudio Player (Android)
AppStudio Player (Android) is available to everyone as Android open beta, you can search for AppStudio Player Beta in Google Play, or go to this link to download AppStudio Player (Android)  .
 
You are now all set to start testing the AppStudio 3.1 Beta!
 

Feedback 

Your feedback is highly appreciated and will help us to improve the final release of AppStudio for ArcGIS 3.1. For bugs and any issues you may find, please submit a bug report. You can also join the beta forum to provide feedback.     
 

Beyond Beta 

The final release is scheduled for late August. Here are a few features and enhancements we are currently working on that might be available in the 3.1 final.  
AppStudio Player for ArcGIS redesign 
We brought a brand-new look for AppStudio Desktop last year in our 2.0 release, and now, it’s time for Player.  We have started redesigning Player not only to match AppStudio Desktop’s style, but also to optimize your app testing workflow. Here is a sneak peek at Player’s new look.  
 
Desktop
  • Update underlying Qt framework to 5.11.1
Templates
  • Map Viewer Measure tool enhancements - display segment length results, ability to choose drawing color, new Identify mode to interact with map when using Measure tool, ability to take screenshots of measure results and send as email attachments. 
  • Map Viewer – Support for offline geosearch
  • Map Tour – Upgrade UI with new Qt Quick Controls   
  • Quick Report – Ability to add multiple feature service layers  
  • Quick Report – New Show Album option to enable or disable user choose a photo from the album on the Media page. 
  • Quick Report – Support iOS HEIC format image as attachments 
 
AppStudio AppFramework 
  • Introduce a new method to check whether the app is installed in the device 
  • Support SafariViewController in WebView2, which is part of the WebView module
  • Support SD Card to read/write data on Android 5.0+ devices
  • Minor enhancements in volume property in Text to Speech 
  • Support changing app status bar color
We want to thank you in advance for your support in testing  AppStudio for ArcGIS 3.1 (Beta) and we look forward to your feedback
Happy testing! 
AppStudio Team 

1. Introduction

 

This AppStudio blog describes how we can use the Networking component to detect for network connectivity and classify the type of network (LAN, WIFI, Mobile Data). This allows you to build apps that can react differently dependent on what type of network they're on, e.g. ask the user whether they want to download content whilst on an expensive mobile data network.

 

2. Minimal App - All Network Configurations

Let's start with a minimal app that shows all Network connections whether active or inactive:

 

import QtQuick 2.7
import QtQuick.Controls 2.1
import ArcGIS.AppFramework 1.0
import ArcGIS.AppFramework.Networking 1.0

App {
    width: 640 * AppFramework.displayScaleFactor
    height: 480 * AppFramework.displayScaleFactor

    Flickable {
        anchors.fill: parent
        contentWidth: textArea.width
        contentHeight: textArea.height
        TextArea {
            id: textArea
            text: JSON.stringify(Networking.configurations, undefined, 2)
        }
    }
}

 

On my Windows machine, I get:

 

{
  "0": {
    "objectName": "",
    "valid": true,
    "name": "vEthernet (Internal Ethernet Port Windows Phone Emulator Internal Switch) 2",
    "identifier": "312537767",
    "bearerType": 1,
    "bearerTypeFamily": 1,
    "bearerTypeName": "Ethernet",
    "configurationType": 0,
    "connectTimeout": 30000,
    "purpose": 0,
    "roamingAvailable": false,
    "state": 14
  },
  "1": {
    "objectName": "",
    "valid": true,
    "name": "vEthernet (VMware Virtual Ethernet Adapter for VMnet8 Virtual Switch)",
    "identifier": "287176532",
    "bearerType": 1,
    "bearerTypeFamily": 1,
    "bearerTypeName": "Ethernet",
    "configurationType": 0,
    "connectTimeout": 30000,
    "purpose": 0,
    "roamingAvailable": false,
    "state": 14
  },
  "2": {
    "objectName": "",
    "valid": true,
    "name": "vEthernet (Default Switch)",
    "identifier": "287176527",
    "bearerType": 1,
    "bearerTypeFamily": 1,
    "bearerTypeName": "Ethernet",
    "configurationType": 0,
    "connectTimeout": 30000,
    "purpose": 0,
    "roamingAvailable": false,
    "state": 14
  },
  "3": {
    "objectName": "",
    "valid": true,
    "name": "vEthernet (VMware Virtual Ethernet Adapter for VMnet1 Virtual Switch)",
    "identifier": "312537825",
    "bearerType": 1,
    "bearerTypeFamily": 1,
    "bearerTypeName": "Ethernet",
    "configurationType": 0,
    "connectTimeout": 30000,
    "purpose": 0,
    "roamingAvailable": false,
    "state": 14
  },
  "4": {
    "objectName": "",
    "valid": true,
    "name": "Bluetooth Network Connection",
    "identifier": "312537798",
    "bearerType": 1,
    "bearerTypeFamily": 1,
    "bearerTypeName": "Ethernet",
    "configurationType": 0,
    "connectTimeout": 30000,
    "purpose": 0,
    "roamingAvailable": false,
    "state": 2
  },
  "5": {
    "objectName": "",
    "valid": true,
    "name": "vEthernet (Intel(R) 82579LM Gigabit Network Connection Virtual Switch)",
    "identifier": "312537802",
    "bearerType": 1,
    "bearerTypeFamily": 1,
    "bearerTypeName": "Ethernet",
    "configurationType": 0,
    "connectTimeout": 30000,
    "purpose": 0,
    "roamingAvailable": false,
    "state": 14
  }
}

 

The things we observed about Networking.configurations are:

 

  1. it's an object, not an array,
  2. every connection is listed (both active and inactive)
  3. there are signals on Network.configurations so you can use it in property binding scenarios (i.e. the moment the network changes, e.g. device is put in airplane mode, your app automatically updates)

 

3. Active Network Configurations

 

In order to filter the list down quickly, we transform the object to an array, then filter the results using Array.prototype.filter:

 

import QtQuick 2.7
import QtQuick.Controls 2.1
import ArcGIS.AppFramework 1.0
import ArcGIS.AppFramework.Networking 1.0

App {
    width: 640 * AppFramework.displayScaleFactor
    height: 480 * AppFramework.displayScaleFactor

    Flickable {
        anchors.fill: parent
        contentWidth: textArea.width
        contentHeight: textArea.height
        TextArea {
            id: textArea
            text: JSON.stringify(
                toArray(Networking.configurations)
                    .filter(isConfigActive)
                    .map(summary),
            undefined, 2)
        }
    }

    function toArray(o) {
        return Object.keys(o).map(function (e) { return o[e]; } );
    }

    function isConfigActive(c) {
        return (c.state & NetworkConfiguration.StateActive) === NetworkConfiguration.StateActive;
    }

    function summary(c) {
        return {
            name: c.name,
            bearerType: c.bearerType
        };
    }
}

 

On my Windows machine, this reduces to an easier to read list:

 

[
  {
    "bearerType": 1,
    "name": "vEthernet (Internal Ethernet Port Windows Phone Emulator Internal Switch) 2"
  },
  {
    "bearerType": 1,
    "name": "vEthernet (VMware Virtual Ethernet Adapter for VMnet1 Virtual Switch)"
  },
  {
    "bearerType": 1,
    "name": "vEthernet (Default Switch)"
  },
  {
    "bearerType": 1,
    "name": "vEthernet (Intel(R) 82579LM Gigabit Network Connection Virtual Switch)"
  },
  {
    "bearerType": 1,
    "name": "vEthernet (VMware Virtual Ethernet Adapter for VMnet8 Virtual Switch)"
  }
]

 

On my Android device, when WIFI is enabled:

 

[
  {
    "bearerType": 2,
    "name": "WIFI"
  }
]

 

or, when Mobile Data is enabled:

 

[
  {
    "bearerType": 10,
    "name": "Mobile"
  }
]

 

On my iOS device, when WIFI is enabled:

 

[
  {
    "bearerType": 0,
    "name": "en0"
  },
  {
    "bearerType": 0,
    "name": "awdl0"
  },
  {
    "bearerType": 0,
    "name": "utun0"
  }
]

 

4. Determining if the Network is LAN, WIFI or MobileData

 

On Windows, Android and Linux the bearerType can be used to classify the network connection, e.g.

 

  • NetworkConfiguration.BearerEthernet
  • NetworkConfiguration.BearerWLAN
  • NetworkConfiguraiton.Bearer3G

 

Whilst on iOS and macOS, the bearerType may not be provided by the operating system resulting in NetworkConfiguration.BearerUnknown. To cover iOS and macOS, we note that the name of the configuration instead:

 

  • en0
  • awdl0
  • pdp_ip0

 

    function isConfigLAN(c) {
        if (c.bearerType === NetworkConfiguration.BearerEthernet) {
            return true;
        }

        if (Qt.platform.os === "osx") {
            return c.name === "en0";
        }

        return false;
    }
   
    function isConfigWIFI(c) {
        if (c.bearerType === NetworkConfiguration.BearerWLAN) {
            return true;
        }

        if (Qt.platform.os === "ios") {
            return c.name === "en0";
        }
       
        if (Qt.platform.os === "osx") {
            return c.name === "awdl0";
        }

        return false;
    }

    function isConfigMobileData(c) {
        switch (c.bearerType) {
        case NetworkConfiguration.Bearer2G:
        case NetworkConfiguration.BearerCDMA2000:
        case NetworkConfiguration.BearerWCDMA:
        case NetworkConfiguration.BearerHSPA:
        case NetworkConfiguration.BearerWiMAX:
        case NetworkConfiguration.BearerEVDO:
        case NetworkConfiguration.BearerLTE:
        case NetworkConfiguration.Bearer3G:
        case NetworkConfiguration.Bearer4G:
            return true;
        }

        if (Qt.platform.os === "ios") {
            return c.name === "pdp_ip0";
        }

        return false;
    }

    function isConfigActiveLAN(c) {
        return isConfigActive(c) && isConfigLAN(c);
    }

    function isConfigActiveWIFI(c) {
        return isConfigActive(c) && isConfigWIFI(c);
    }

    function isConfigActiveMobileData(c) {
        return isConfigActive(c) && isConfigMobileData(c);
    }

 

Now that we have these useful functions, we can quickly chain them together to determine whether we're on WIFI or MobileData. Because we convert the object to an array, we can make use of Array.prototype.some to quickly lookup a network configuration of a particular type:

 

    property var config: toArray(Networking.configurations)
    property bool isOnline: isLAN || isWIFI || isMobileData
    property bool isLAN: config.some(isConfigActiveLAN)
    property bool isWIFI: config.some(isConfigActiveWIFI)
    property bool isMobileData: config.some(isConfigActiveMobileData)
    property bool isMobileDataOnly: isMobileData && !isWIFI && !isLAN

 

 

5. Network Check Sample

 

The "Network Check" app is available for you to try which demonstrates all of the above points. You can find "Network Check" app in AppStudio.

 

  1. Launch AppStudio
  2. Select New App
  3. Click Search Icon
  4. Type: Network Check

 

Network Check

 

The "Network Check" source code is also avilable at arcgis-appstudio-samples GitHub.

AppStudio Player for ArcGIS allows you instantly run and test your AppStudio apps on a real device without build requirements. As of 3.0 release, we have identified two issues: 
  • Level 1 named users cannot sign into AppStudio Player 
  • Launching apps within AppStudio Player using Custom URL scheme on iOS devices is not working 
 
We believe these two issues are critical to the usage of Player and we are happy to inform you that an update is available to be downloaded on the platform of your choice.
  
The Player for your devices with the latest fixes (3.0.14) is now available at Apple App StoreGoogle Play Store, and Amazon Appstore. The desktop version (Windows, Mac, Linux) of AppStudio Player is also available and can be downloaded from http://doc.arcgis.com/en/appstudio/download/

The new GNSS Info sample, included in AppStudio 3.0 Desktop Edition, brings together the components in Qt and the AppStudio AppFramework that you can use to build an app that interacts with GNSS (Global Navigation Satellite System) receivers.

 

Common features of this type of apps are:

  • The requirement to browse and connect to a receiver
  • Display a location on a map along with metadata about that location
  • Presentation of available satellite information
  • Presentation of key quality parameters that may indicate the usefulness of the data received
  • Display a raw feed of the data coming from the receiver for troubleshooting purposes

 

Each of these features are shown in this app on separate tabs. You may choose to use one or more of these tabs in your own app, or use this app as it is, to test out your own GNSS receivers with your hardware.

 

What type of receivers can be used?

This app will connect to, and display location information from, GNSS receivers that output NMEA sentences. For examples of recievers that we have tested with see GPS receiver support—AppStudio for ArcGIS | ArcGIS .

 

Qt and the AppFramework can also read and write data to other bluetooth devices using the same components used in this app. For example, you can connect to a bluetooth printer using the same device discovery component and send data from your app to the printer for immediate printing.

 

For more information on the key components in this sample refer to:

 

Receiver detection

This app can detect receivers that are connected to your device using:

  • Bluetooth pairing – to connect to a receiver in your app you must first pair it with your device. Note that some receivers have a limit to the number of devices they can be paired to at anyone time. For example, the Eos Arrow can only pair to one device at a time, while Bad Elf devices can pair with up to 2 devices at a time. For information on pairing your reciever see Use a high-accuracy GPS receiver—AppStudio for ArcGIS | ArcGIS .
  • USB/COM connection – A GPS receiver that plugs into a computer via USB is displayed in the app as a COM port. To confirm which COM port your device is represented by, look at the list of devices connected to your computer. For example, on Windows go to Device Manager > Ports (COM & LPT).
  • TCP/UDP network connection – A TCP (Transmission Control Protocol) connection is bidirectional and has limited error handling. On the other hand, UDP (User Datagram Protocol) is one way only and has no error handling. Creation of a UDP connection requires the hostname and port of the destination machine (where you are running the app), while creation of a TCP connection requires the hostname and port of the machine providing the GNSS information to the destination machine.

 

On the device tab, press to select a device. Next time you launch the GNSS Info app, it will attempt to automatically connect to the last device used. You can always return to the device tab and change which device you connect to.

 

Location display

The location tab shows the current location on a map. If your device has network connectivity, an online basemap is used. A limited offline basemap is also available in the sample.

 

Key metadata about the current location is displayed. The app also allows the user to change the units in which latitude and longitude are displayed.

 

Use the location tab to confirm that the location reported from your hardware is the expected location.

 

 

Satellite sky plot

The skyplot tab shows both a skyplot and a table view of the satellites reported by the receiver. Be aware that some receivers have a physical display that may sometimes display different values to this page. Other receivers have their own companion app that also may show different results. These differences are mostly likely attributed to manufacturer specific parameters and the way each manufacturer presents data from the receiver.

 

The GNSS Info app displays the number of satellites in view, and the amount in use to calculate your location. There can also be satellites in view (or in use) that have no signal. This is usually a temporary response and should not affect the quality of a location displayed in an app.

 

Use the skyplot tab to ensure you have positioned yourself or your hardware in the best location to capture a suitable position value.

 

 

Quality tab

The quality tab lists common meta data available from a GNSS receiver. These are values you may choose to capture during data collection as attributes of your feature. Alternatively, you may use these to indicate the quality of the position to the user. For example, you might warn the user that accuracy values are greater than a prescribed threshold and disallow them to capture data.

 

 

Log tab

The log tab shows a stream of the sentences that are emitted from the receiver. Different receivers output different sent

ences. The presence or absence alone of sentences is useful for troubleshooting a receiver connection issue. The inspe

ction of the presence or absence of individual sentences can also aid diagnosis of unexpected parameter results. For example, latitude, longitude and altitude errors are only calculated when the GST sentence is present. Not all receivers

output the GST sentence. If the GST sentence is not available, then ‘No Data’ is reported on the quality tab for latitude, longitude and altitude error.

 

Use the pause button on this tab to study the latest sentences. Use the delete button to clear the screen to make it easier to read new sentences.

 

 

Switching between the tabs of this app will display to you the continuous stream of data reported from the connected GNSS receiver in several ways: as text, on a map, as a graphical representation, and in its rawest form. You can choose which of these best suits your own app, or use this app to evaluate what information is available to you from your own receiver.

Map Tour template is ideal when you want to present a linear, place-based narrative featuring images audios, or videos. Each "story point" in the narrative is geo-located. Your users have the option of clicking sequentially through the narrative, or they can browse by interacting with the map or using an optional thumbnail carousel. You can create a Map Tour using the Story Maps builder and then easily convert that to a beautiful native mobile application without writing any code. You can also configure your branding icons, colors, and images to your Map Tour apps. 
Thank you for the usage and providing us good feedback. Many exciting new features and UI enhancements have been added for this release.
Fully offline support  
Currently, Map Tour pictures, thumbnails, and text get cached locally by default, meaning that you are able to view them when you do not have Wi-Fi or a cellular connection.  In this release, we extend your ability to download and view Mobile Map Packages (MMPKs) that was created using the ArcGIS Publisher extension with anonymous use enabled. 
An MMPK ID needs to be set on AppStudio Desktop Settings > Properties > Gallery > Mobile Map Packages (mmpk) item ID field. Once the MMPK has been set on Desktop, the offline map will be automatically detected and trigger a pop-up to ask you to download in your Map Tour app.  You can also download the offline map by opening the top left menu on the Map Tour Gallery page, and choosing Download offline map.  The Clear cache option on the Gallery menu page removes the offline map, cached pictures, thumbnails, and text from your device. 
       
Note, You will not see Download offline map option on the Menu page if your MMPK was not created using ArcGIS ProPublisher extension with anonymous enabled. 
Upgrade ArcGIS Runtime SDK to 100.2.1
ArcGIS Runtime level has been upgraded from 100.1 to 100.2.1, which means some new features added to Runtime 100.2 and 100.2.1 are available in Map Tour, too.  For example, if your MMPK contains tile packages, it will be supported by Map Tour as well. 
Launching Map Tour at a specific page through a custom URL Scheme
One of the most required enhancements we received from you is to use custom URL Scheme launch a Map Tour at a specific page.  We have added this functionality to Map Tour template version 3.0, allowing you to launch a specific Map Tour or a Map Tour point through custom URL Scheme.  To do this:
 
Step 1:  Setting a URL Scheme for your Map Tour app in the Advanced Settings dialog. 
                          
Step 2:  Adding Custom URL Scheme to the app that you want to launch Map Tour.  The example below shows one of the ways to do so in QML.  
Qt.openUrlExternally('mymaptourapp://?appid=c50be5615f024cc482ccb88222a8719d&index=2’)   
 
  • mymaptourapp should be the app’s URL Scheme defined in step 1
  • c50be5615f024cc482ccb88222a8719d is the Story Map ID
  • 2 means you would like to open the second point in the Story Map directly  

 

 

Step 3:  If you wish to launch Map Tour app from another app built with AppStudio on iOS devices, you need to whitelist launch URL Scheme.  As of AppStudio 3.0 release, we have included a UI for setting Launch URL Schemes in the Advanced Settings dialog.  To do this, select another app> click Settings icon on the side panel > click the Advanced button and put the URL Scheme of your Map Tour in the Launch URL Schemes field.    
 
                         
 
Set default map tour points order 
Previously, the map tour points were sorted by the Default optionWith this release, we have provided a new Sort type field in the AppStudio Desktop Settings to allow you to specify the default map tour points sorting order with the choices of default, distance, or title. 
Ability to hide the Sorting button 
Map Tour template 3.0 has introduced a new Enabled tour item sorting field in the AppStudio Desktop Settings to hide Sorting button on the Map Tour app.  If you wish to hide Sorting button, start AppStudio Desktop, open Settings > Properties > Gallery > disable Enable tour item sorting button 
 
Data Usage warning
To help you manage your mobile data usage,  a warning message will be displayed when you are trying to download an MMPK using cellular data.  
Update UI to support iPhone X 
Map Tour’s layout has been updated to fill the iPhone X screen, and to not obscure rounded corners and indicators for both portrait and landscape orientation. 
 
Note: Map Tour template includes ArcGIS Runtime functionalities, please do not forget to set your ArcGIS Runtime license before deploying your app into production.  AppStudio Desktop is capable of automatically generate a free Runtime Lite license for you (Settings > Advanced Settings dialog > Set Lite license).   
                 
We hope you enjoy Map Tour template updates and if you are interested in updates to other templates, please click this link to find all the blog posts related to the 3.0 release of AppStudio for ArcGIS.
 
AppStudio Player is a great tool to test your AppStudio apps.  It gives you instant feedback of what your apps will look and act like on a real device without build requirements.  We have been continuing our work on adding new functionalities and enhancements to Player to improve your app developing experience.  
Introducing Player Classic
As of AppStudio 3.0 release, ArcGIS Runtime 10.2.6 is no longer supported in Player as the older ArcGIS Runtime 10.2.6 technology gets progressively replaced by the newer ArcGIS Runtime 100.x.  Just in case, if you still have apps that is built using the old generation of ArcGIS Runtime 10.2.6 that need to be tested, we have released Player Classic separately in both Apple app store and Google Play store.  Notice that Player Classic doesn’t include new changes added to 3.0 release. Also you are required to download and install Player Classic separately.  
The existing Player in the app stores will be updated with all the new features and enhancements added to 3.0 release.  
Upgrade ArcGIS Runtime version to 100.2.1
ArcGIS Runtime version has been upgraded from 100.1 to 100.2.1.  This upgrade allows Player to support apps created using ArcGIS Runtime 100.2 or 100.2.1 as well. 
Secure Storage
AppStudio 2.1 release introduced the Secure Storage plugin to allow AppStudio apps to store data into a system-provided location (For example, data will be stored in the Keychain on macOS and iOS devices, and in the Keystore on Android devices).  In this release, Player just got safer and more powerful with the implementation of encryption tokens and sensitive information into the system using the Secure Storage plugin.
Support for fingerprint login on Android and Face ID login on iPhone X
With AppStudio 3.0, Android build tools have been upgraded to API level 23, and as a result, fingerprint authentication is supported by the Player now on the Android devices.  In addition, you can also log into Player using Face ID on iPhone X.
 
Support for licensing ArcGIS Runtime 100.x apps
Previously, when running an app inside the Player, there will always be a watermark on the map even though your app has assigned ArcGIS Runtime license.  We have been actively taking your feedback and now apply your app’s ArcGIS Runtime license into Player, meaning if your app has an ArcGIS Runtime Lite license, the watermark will be removed when testing your app using Player.  
         
Update UI to support iPhone X 
Player’s layout has been updated to fill the iPhone X screen, and to not obscure rounded corners and indicators for both portrait and landscape orientation. 
As always, we will continue taking your suggestions and enhancing Player to help improve your app developing experience. A blog post on what's new in Map Tour 3.0 is coming soon, so stay tuned!  
Click this link to find all the blog posts related to the 3.0 release of AppStudio for ArcGIS. 
 
 
 
AppStudio for ArcGIS Desktop Edition provides feature-rich development tools to allow you further configure, customize, test, distribute, and build your apps easily and quickly. Many new features and enhancements are introduced in this release, as well as some key upgrades to the frameworks that you build your apps with. 
Upgrade ArcGIS Runtime to 100.2.1 
ArcGIS Runtime powers GIS capabilities in your applications and is fully supported by AppStudio. In this release, ArcGIS Runtime version has been updated from 100.1 to 100.2.1, which means all of the exciting new and powerful features, bug fixes, and enhancements added to ArcGIS Runtime 100.2 and 100.2.1 are available in AppStudio 3.0.
Upgrade Qt to 5.10
Behind the scenes, the underlying Qt framework has been upgraded from 5.9.1 to 5.10, which enables you to take advantage of new functionalities and enhancements received in Qt 5.10, such as new QML types and styles in Qt Quick Controls 2, a finalized Text-to-Speech module, an updated Qt WebEngine, and so much more. You also benefit from more than 100 bug fixes in Qt 5.10.   
Deprecations
AppStudio 2.1 will be the last release to support ArcGIS Runtime for Qt 10.2.6. If you wish to continue building apps using 10.2.6, please do not update your version of AppStudio to 3.0. AppStudio 3.0 will drop support for 32-bit iOS apps to help optimize an app’s performance on supported devices as well as conserve your device memory.  Please refer to this blog post for more information about deprecations. 
AppFramework.Dialogs plugin has been deprecated in AppStudio 3.0.  You will need to remove ArcGIS.AppFramework.Dialogs import statement to continue running the app.  
 
Note: This will not cause further issues for the apps that contain Dialogs plugin such as Quick Report, as the app only imported the plugin, and no longer used anything it provided.
To remove ArcGIS.AppFramework.Dialogs import statement from your existing Quick Report:
1.     Click Edit button to run Qt Creator 
2.     Navigate to CameraComponent.qml file
3.     Remove line 14 import ArcGIS.AppFramework.Dialogs 1.0 
       
 
Categorize sample apps 
Work has continued to make the sample searching experience as easy as possible. In this release, we have added a new combo box to categorize more than 60 samples in the New App dialog. With this improvement, you can now easily find a sample that you want to use based on its functionality.
   
New Samples and Layout 
We have added seven new samples (WMS Layer, Feature Layer shapefile - requires ArcGIS Runtime Standard License, GNSS Info, Replicator, SD Card, Network Check, OAuth + Biometric Authentication) and a Quick Capture enterprise template in this release to help you develop your own applications. The newly added ArcGIS Runtime samples demonstrate enhancements and GIS capabilities added to ArcGIS Runtime 100.2 and 100.2.1. You can also see how to connect to high-accuracy GPS receivers and read accuracy parameters from the GNSS Info sample app.  OAuth + Biometric Authentication sample uses OAuth 2.0 to log in to ArcGIS Platform.  It also implements the Secure Storage and the Authentication plug-ins.  
                   
Cloud Make improvements
With AppStudio 3.0, Cloud Make tool now supports newly introduced iOS application distribution mechanisms, such as distributing through the App Store, to members of your team, to your own organization, or to designated devices.
  
This release also introduces the ability to see the current status of cloud Make builds. Clicking on the notification bar on the cloud Make tool dialog will take you to the Active Cloud Builds view, where you will be able to see the progress of your builds on specific platforms. In addition, Could make Make error messages will be detected and reported to the notification bar.    
AppStudio Desktop 3.0 has deprecated ArcGIS Runtime 10.2.6; however, for users who have existing old Runtime app, can still use Could Make environmental to build old Runtime apps with AppStudio Desktop 2.1.   
Settings dialog UI improvements 
URL Schemes let you launch other apps from your app and as of iOS 9, the URL Schemes need to be whitelisted. We have added UI in the Advanced Settings dialog to allow you to specify launch URL Schemes.  
           
While adding support for the high accuracy GPS receiver, we also introduced a new field in the Advanced Settings dialog for specifying External Accessory Protocol Strings. This is needed for iOS apps, to provide a list of third-part external accessories that have whitelisted your app.
              
The Settings tool now provides the option to enable or disable multiple instances for Windows and Linux apps.
Image
      
Other enhancements 
·        Searching for an app using hashtags is no longer case-sensitive
·        Slovenian language support
·        Support for background external accessory property in appinfo, if High Accuracy Location is enabled in Settings.
·        Support for the new Android Runtime Permission Model
·        Upgraded toolchains (Visual Studio 2017, XCode 9)
·        Improved logging and error handling for Windows builds
 
We hope you enjoy the new features and enhancements added to Desktop in this release. A blog post on what’s new in Map Tour template is coming soon. 
Click this link to find all the blog posts related to the 3.0 release of AppStudio for ArcGIS. 
 

While publishing your iOS app to Apple’s App Store or TestFlight, what should you do if you encounter the following error?

 

Error ITMS-90717: “Invalid App Store Icon”

 

This is caused due to transparent pixels and/or alpha channels present in the app icon. As per iOS app icon specifications, developers are required to use an app icon with a simple, opaque background. Please refer to the link below to study all the guidelines for creating an app icon.

 

https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/app-icon/

 

If you are using Adobe Photoshop to create the app icon image, even if there are no transparent parts of the image, you still need to make sure that you uncheck 'Transparency' before exporting the .png file. 

 

You can check whether your image has alpha channels using Finder -> right clicking on your app icon .png files -> Get Info -> More Info -> alpha channel.

 

If you are using any other tool to create your app icons, make sure to apply the appropriate settings to remove transparent pixels and alpha channels from the icon image.

 

Note: This restriction only applies to iOS apps. Transparency in app icon is permitted on other platforms. With AppStudio 3.0, you can now provide platform specific app icons. Open appinfo.json in your AppStudio project and specify the file as needed for platform.  In AppStudio, Select your app, click on the Edit icon on the side panel to open Qt Creator, then select appinfo.json file on the left panel.

 

The following snippet shows how to provide platform specific app icon.

 

 

"resources": {

        "android": {

            "appIcon": "assets/android_appicon.png"

        },

        "appIcon": "appicon.png",

        "ios": {

            "appIcon": "assets/ios_appicon.png"

        },

        "linux": {

            "appIcon": "linux_appicon.png"

        },

        "macos": {

            "appIcon": "mac_appicon.png"

        },

        "uwp": {

            "appIcon": "uwp_appicon.png"

        },

        "windows": {

            "appIcon": "windows_appicon.png"

        }

},

 

 

I hope this blog post is helpful and please let us know if you have any questions in the comment below.

The Map Viewer template app allows you to view public or secured web maps in a native app.  You can also download and view Mobile Map Packages (MMPKs) in your Map Viewer app for offline use.  We are excited to announce the new features and enhancements that are introduced in this release.
 
Upgrade ArcGIS Runtime SDK to 100.2.1
 
ArcGIS Runtime level has been upgraded from 100.1 to 100.2.1, which means that new features added to Runtime 100.2 and 100.2.1 are also available in Map Viewer. This includes support for MMPKs containing Vector and Raster tile packages and Raster datasets. 
Note: An ArcGIS Runtime Standard license is required for accessing MMPKs that contain Raster datasets
Measure tool (NEW)
This release also adds a new Measure tool, letting users draw polylines or polygons on the map to measure distance or areas.  You can also set measurement units in the app to return different results.
                    
Secure Storage
Map Viewer just got safer and more powerful with the implementation of encrypting tokens and sensitive information into the system using the Secure Storage plugin
 
The sensitive information will be stored in the Keychain on macOS and iOS devices,the Keystore on Android devices, the Credential Locker on Windows devices, and in a keychain.ini file on Linux devices.   
Biometric authentication support (NEW)
With this update, we have implemented the Authentication plugin in conjunction with the Secure Storage plugin to allow you log into Map Viewer quicker and safer.  You can now log into Map Viewer through fingerprint scan on iOS, MacOS, and Android devices.  Additionally, Face ID is also supported for iPhone X users.  
                    
 
 
 
Better offline experience 
Since announcing support for offline mobile map packages (MMPKs) in the AppStudio 2.1 release, we have been continuing work on this feature for providing you a better offline experience. To help you manage your mobile data usage,  a warning message will be displayed when you are trying to download a MMPK using cellular data. We also introduced a Clear Cache button on the Menu page to remove downloaded MMPKs to help conserve your device’s storage capacity.  Previously, you were also required to sign into your portal or organization to download and view MMPKs. However, you may now choose to skip sign in to access MMPKs which are created using the ArcGIS Pro Publisher Extension and have the Enable Anonymous Use property enabled.
                   
New options in Gallery page to show online maps only, offline maps only, or both
We want to give you more control over your Map Viewer configuration. The list of items in the Gallery page can now be filtered to display web maps only, MMPKs only, or both web maps and MMPKs.  To do this, start AppStudio Desktop, open the Settings dialog when your Map Viewer app is selected, select Gallery, scroll down to the Maps to Show in Gallery and select the desired type of maps you would like to show.
Note:  You will need to sign into your portal or organization to download and view offline maps.  To display Sign In button on the Map Viewer Start page, you need to have Support secured maps enabled, which can be done in Settings > Map Viewer Properties > Gallery 
            
                  
 
Other enhancements 
·        Geosearch results are now displayed based on distance from the device location
·        Supports identifying features in a feature collection 
·        The back button on Android devices now moves the user to the previous page, rather than exiting the app
·        UI has been updated to support the iPhone X resolution
 
We hope you enjoy the updates to Map Viewer, available by creating a new template app on the AppStudio website or AppStudio Desktop. What’s new in Map Tour 3.0 blog post is coming soon!
Note: Map Viewer template includes ArcGIS Runtime functionalities, please do not forget to set your ArcGIS Runtime license before deploying your app into production.  AppStudio Desktop is capable of automatically generate a free Runtime Lite license for you (Settings > Advanced Settings dialog > Set Lite license).   
                
 
Click this link to find all the blog posts related to the 3.0 release of AppStudio for ArcGIS. 
The quick report template app allows you to collect and submit data and attachments to a public or secured feature service, be it point, polyline, or polygon hosted on ArcGIS  or your own Enterprise.  We’re excited to share the new features and enhancements added to Quick Report version 3.0 with you.  
               
Quick Report version 3.0 highlights 
Ability to rename video attachments 
The Quick Report template gives you the ability to record video and audio as attachments to the feature service.  In this release, we have added the ability to rename video attachments in Quick Report app.
Note: Recording of video and audio is disabled by default. To enable these features, in AppStudio Desktop, open Settings > QuickReport Properties > Forms and scroll down to the Enable video recorder (BETA) and Enable audio recorder (BETA) buttons.
                               
New status message while uploading multiple attachments 
The upload page messages have been improved greatly in this release.  If multiple attachments are created for a report, each attachment uploading status will be reported separately on the Results page. 
               
Ability to limit maximum attachment number 
Previously, users could provide up to six attachments for each report to feature service.  We have been actively listening to your feedback and provided a new property to specify the maximum number of attachments to upload.  To set this property, open AppStudio Desktop, select your Quick Report app, open Settings QuickReport Properties Form, scroll down and choose a Maximum allowable number of attachments.      
                                       
Sort coded value domains alphabetically 
One of the most requested enhancements we got is to allow sorting Coded Value Domains alphabetically. In this release, we have introduced a new property, sortDomainByAlphabetical, to give the ability to change the Coded Value Domain in alphabetical order.  By default, sortDomainByAlphabetical is set to false, meaning the domain order is the original order based on the feature service. The property sortDomainByAlphabetical needs to be set to true to sort the domains alphabetically. To do this, start AppStudio Desktop > Click on the Edit icon to open Qt Creator, navigate to the appinfo.json file, and change sortDomainByAlphabetical to true.
             
Data Usage warning
To help you manage your mobile data usage,  a warning message will be displayed when you are trying to download an MMPK using cellular data.  
                
Other Enhancements
Other improvements made to Quick Report for the AppStudio 3.0 update include:
1.      ArcGIS Runtime version has been updated to 100.2.1 
2.      A scroll bar has been added to the Select Type page
3.      Update UI to support iPhone 8 and iPhone X
Note: the ArcGIS.AppFramework.Dialogs has been deprecated with 3.0 release.  You will see following error messages when running an existing Quick Report app created before 3.0 release (April 20th) on AppStudio 3.0.  
If you built a Quick Report app on AppStudio Website, please update Quick report template to version 3.0 by creating a new one.  If you built a Quick Report app on AppStudio Desktop, you need to remove ArcGIS.AppFramework.Dialogs import statement.  To do this:  
   1.     Click Edit button to run Qt Creator 
   2.     Navigate to CameraComponent.qml file
   3.     Remove line 14 import ArcGIS.AppFramework.Dialogs 1.0 
         
Note: Quick Report template includes ArcGIS Runtime functionalities, please do not forget to set your ArcGIS Runtime license before deploying your app into production.  AppStudio Desktop is capable of automatically generate a free Runtime Lite license for you (Settings > Advanced Settings dialog > Set Lite license).   
                
We hope you enjoy the updates to Quick Report and if you are curious about what’s new in Map Viewer, watch out for next blog post! 
Click this link to find all the blog posts related to the 3.0 release of AppStudio for ArcGIS. 

We are excited to announce that AppStudio for ArcGIS version 3.0 is now available to download.  This release focuses on upgrading underlying Qt framework, build infrastructure and the ArcGIS Runtime.  In addition, many new features and enhancements are added to AppStudio Desktop, Player, AppFramework, and three templates.

Few highlights of AppStudio 3.0 release:
  •  Underlying Qt framework has been upgraded to 5.10
  •  ArcGIS Runtime has been up upgraded to 100.2.1
  •  Sample apps available in AppStudio Desktop are now categorized
  •  Player now uses an app’s ArcGIS Runtime license if available 
  •  Map Tour template supports Mobile Map Packages, allowing it to work fully offline
  •  New Measure tool was introduced in Map Viewer template
  •  You can now limit the maximum attachments number for the Quick Report template 
  •  Support for connecting to high-accuracy GPS receivers and location accuracy parameters 
 
You can get the latest version of AppStudio for ArcGIS here.  Don’t forget to update the AppStudio Player app on your mobile devices from iTunes and the Google Play store or on your desktops from here.
                                                             AppStudio 3.0 new feature highlights 
AppStudio Desktop 
With this release, ArcGIS Runtime version has been updated from 100.1 to 100.2.1, which means all of the exciting new and powerful features, bug fixes, and enhancements added to ArcGIS Runtime 100.2 and 100.2.1 are available in AppStudio 3.0.  We also discontinued support for ArcGIS Runtime 10.2.6 on AppStudio Desktop; please read this blog post to learn more about this deprecation.  Additionally, we have improved the sample searching experience by adding a new combo box to categorize more than 60 samples.  Many enhancements are added to the cloud Make and Advanced Settings tool as well.  A blog post on what’s new in AppStudio Desktop is coming soon, so watch out for it!
               
                                                                  AppStudio samples are categorized 
AppStudio Player
As of the AppStudio 3.0 release, ArcGIS Runtime 10.2.6 and iOS 32-bit apps are no longer supported. This means the latest Player 3.0 available in the app stores will only run Appstudio apps built with the new generation of ArcGIS runtime 100.x. 
Just in case, if you still have apps that are built using the old generation of ArcGIS Runtime 10.2.6 that need to be tested we have released Player Classic separately in both Apple app store and Google play store.
Note that Player Classic doesn’t include new changes added to 3.0 release. Also, you are required to download and install Player Classic separately. You can install both Player classic and latest player both on the same device if needed.  
The existing Player in the app stores will be updated with all the new features and enhancements added to 3.0 release, such as supporting fingerprint login on Android and Face ID login on iPhone X, and applying for an app’s ArcGIS Runtime license when being run in Player.  Watch for an upcoming blog post on what’s new in Player 3.0!  
                   
                      Player uses app's Runtime license
AppStudio Templates
All three app templates - Map Viewer, Map Tour and Quick Report have received many exciting new features, enhancements, bug-fixes and improvements in user experience in this release.
  •   Map Tour now works fully offline with the support of Mobile Map Packages
  •   You can launch Map Tour at a specific page using custom URL Scheme 
  •   You can sign into Map Viewer quicker and safer using fingerprint, or face ID for iPhone X
  •   A new Measure tool is now available in Map Viewer to help you measure distance or area on the map
  •   Map Viewer gallery now supports new options to show  maps only, offline maps only, or both
  •   The Quick Report results page message has been improved, with reporting each attachment’s upload status to the  feature service. You can also rename video attachments in the Quick Report
  •   A warning message will be displayed when downloading Mobile Map Packages with cellular data on all three templates
We will publish three separate blog posts to provide you more information on template updates next week.  
                 
                                                                  New Measure tool in Map Viewer template
AppStudio Framework 
Two new beta plugins – Positioning, and Device – have been introduced in this release.  These allow you to create an app that interacts with high accuracy GPS receivers.  We also published a GNSS Info sample to demonstrate how to connect to a receiver and present location accuracy and satellite information.  Other changes in the AppFramework include:
  •   Biometric Authentication is now supported on Android 
  •   Encryption used in Secure Storage Plug-in is upgraded and as a result, the maximum length for a key or a value has been changed from 240 to 214
  •   Speed improvements have been made for secure storage on Android  
  •   The AppFramework.Dialogs plugin is now deprecated
  •   Text-to-speech has been moved out of beta and supported on all platforms

 

 

           

                                                                           GNSS Info sample

 

Bug Fixes

BUG-000095218

Symbology issue with applications created using the Story Map Tour template in the AppStudio for ArcGIS website is resolved.

BUG-000095405

Incorrectly formatted word "Display" in Settings is corrected

BUG-000099383

The Map Viewer template in AppStudio for ArcGIS now shows the default extent when opened on Android and iOS devices

BUG-000101053

Missing checkboxes in App Studio Make tool from AppStudio for ArcGIS Desktop on Arabic Mac OSX is corrected.

BUG-000101597

Security vulnerability with iOS applications created with AppStudio for ArcGIS is resolved.

BUG-000101602

iOS apps developed with AppStudio for ArcGIS are now getting compiled using the default iOS memory management framework.

BUG-000101822

The AppStudio for ArcGIS Map Viewer crash issue with time-enabled layer is resolved.

BUG-000101978

Security vulnerability with Android applications created with AppStudio for ArcGIS is fixed.

BUG-000102326

The issue with Map Scale settings of AppStudio for ArcGIS Map Tour not being honored when set in AppStudio for ArcGIS Desktop no longer exists.

BUG-000102917

An AppStudio for ArcGIS application created with the Map Viewer template shows numeric coded values rather than associated domain values.

BUG-000103139

A Map Tour template app in AppStudio for ArcGIS is able to retrieve an image that is successfully accessed when the same image is referenced in a Story Map Tour application in ArcGIS .

BUG-000103313

The OpenStreetMap basemap displays in an AppStudio Player for ArcGIS app that is created using the AppStudio for ArcGIS Map Viewer template.

ENH-000089905

Issues with Quick Report app in German are resolved.

We hope you enjoy all the new updates, features and bug fixes included in this release.  As always, we will continue to listen to your feedback and bring new features to improve your app development experience. A series of blog posts on what’s new in the templates, Desktop, and Player will be published soon.  So, stay tuned! 
Want to try AppStudio for ArcGIS? check this video to see how to sign up for a free trial.  

Today, we are pleased to announce the beta release of AppStudio for ArcGIS 3.0.  We encourage you to participate in the AppStudio 3.0 beta program to try out new features, report bugs you may find, and ensure your AppStudio apps work well.  The goal of the beta program is to gain valuable feedback and deliver a stable and high-performance product for everyone.  

Disclaimer: Do not build apps to be used in production or submit to app stores using the Beta builds.
What’s New
This beta release includes many new features, enhancements, UI updates, and bug fixes (Thank you!). Behind the scenes, the underlying Qt framework has been upgraded from 5.9.1 to 5.10, which enables you to take advantage of new functionalities and enhancements received in Qt 5.10.
With AppStudio 3.0, Android build tools have been upgraded to API level 23, and as a result, Android Runtime permission model and fingerprint authentication are now supported.  You can implement fingerprint authentication in conjunction with AppFramework Secure Storage plugin to allow you sign into you AppStudio apps faster and safer on all supported platforms.
 
Additionally, ArcGIS Runtime version has been updated from 100.1 to 100.2.1, which means all of the exciting new and powerful features, any bug fixes and enhancements added to ArcGIS Runtime 100.2 and 100.2.1 are available in AppStudio 3.0.   
A full list of new features and enhancements of AppStudio 3.0 can be found at Early Adopter Program website
Deprecations
AppStudio 2.1 will be the last release to support ArcGIS Runtime for Qt 10.2.6.  For more information about deprecating 10.2.6, check this blog post. If you wish to continue building apps using 10.2.6, please do not update your version of AppStudio to 3.0.  
AppStudio 3.0 will drop support for 32-bit iOS apps. If you have created AppStudio iOS apps before you might not have realized but it did support both 32-bit and 64-bit variants of your app and any dependencies such as ArcGIS Runtime. Following the device statistics and latest technology trends, we decided to drop building apps for the diminishing 32 bit iOS devices out there. Just targeting 64-bit iOS will not only help optimize an app’s performance on supported devices but also conserve your device memory. As a side effect, you will also see a significant reduction in app binary size (~50% savings).
 
AppFramework.Dialogs plugin has been deprecated in AppStudio 3.0 Beta version, therefore, the following dialog will appear when running apps contain AppFramework.Dialogs plugin (such as Quick Report 2.1 or below). You will need to remove ArcGIS.AppFramework.Dialogs import statement to continue running the app. 
Note: This will not cause further issues with 2.1 Quick Report, as the app only imported the plugin, and no longer used anything it provided.
     
             
For example, to remove ArcGIS.AppFramework.Dialogs import statement in Quick Report:
1.     Click Edit button to run Qt Creator 
2.     Navigate to CameraComponent.qml file
3.     Remove line 14 import ArcGIS.AppFramework.Dialogs 1.0 
        
  
Note: If you built a Quick Report app using AppStudio Website, please update Quick report template to version 3.0 by creating a new one.  
  
Getting Started 
The beta program is open to anyone, you can join our Early Adopter Community to get access to the latest versions of AppStudio 3.0.
 
Download AppStudio Desktop 
You can download the beta version of the AppStudio Desktop 3.0 here
 
Download AppStudio Player (iOS)
Please leave your email to this forum thread so that we can add you to Apple’s Test Flight program to download AppStudio Player 3.0 (Beta).
 
Download AppStudio Player (Android)
You can go to early adopter website to download AppStudio Player 3.0 (Beta) on your Android device as well. 
 
You are now all set to start testing the AppStudio 3.0 Beta!
 
Feedback 
Your feedback is highly appreciated and it will help us to improve the final release of AppStudio for ArcGIS 3.0. For bugs and any issues you may find, please submit a bug report. You can also join the beta forum to provide feedback.     
 
The final release is scheduled to release in mid-April.  We want to thank everyone who contributes to AppStudio for ArcGIS 3.0 in advance and wish you happy testing! 

AppStudio for ArcGIS is going through some major updates, starting from the upcoming release of version 3.0. Below are the significant changes that you will find in the upcoming release of AppStudio.

 
 
Deprecation of ArcGIS Runtime 10.2.6

 

AppStudio for ArcGIS provides users with the ability to create their own GIS-enabled, cross-platform native apps. In order to provide these GIS capabilities to your apps, AppStudio relies heavily on the ArcGIS Runtime. 

 

Currently, AppStudio allows users to create apps using either ArcGIS Runtime 10.2.6 or ArcGIS Runtime 100.1. As the older ArcGIS Runtime 10.2.6 technology gets progressively replaced by the newer ArcGIS Runtime 100.x, we’re keeping up with the changes and plan to deprecate support for ArcGIS Runtime 10.2.6 fully over the next few releases of AppStudio starting from version 3.0.

 

So what is the road ahead, and how does this impact users?

 

  • AppStudio for ArcGIS 3.0 will only include libraries for ArcGIS Runtime 100.2.1. Users who wish to create new apps with the ArcGIS Runtime 100.2.1 or edit their existing 100.x based Runtime apps will be able to do so. Users can also use all other tools such as Player, cloud make, local make, console etc. as usual.

 

  • For users who have existing apps with ArcGIS Runtime 10.2.6, we advise you to continue using AppStudio version 2.1 and not upgrade to version 3.0. The Cloud Make environment for building apps with ArcGIS Runtime 10.2.6 will still be maintained and you will be able to send build requests from AppStudio version 2.1.

 

  • On the AppStudio website, the three templates and all samples will continue to work on latest ArcGIS Runtime i.e. will be upgraded from 100.1 to 100.2.x to take advantage of all the new features and bug fixes.

 

More information about building apps using the ArcGIS Runtime 10.2.6 will be provided in release blog posts for AppStudio for ArcGIS 3.0.

 
 
Discontinuing build support for 32bit iOS apps
 

AppStudio for ArcGIS 3.0 will drop support for 32-bit iOS apps. If you have created AppStudio iOS apps before you might have not realized, but it did support both 32 bit and 64 bit variants of your app and any dependencies such as ArcGIS Runtime. Following the device statistics and latest technology trends we decided to drop building apps for the diminishing 32 bit iOS devices out there.  Just targeting 64-bit devices for iOS apps will not only help optimize an app’s performance on supported devices, but also conserve your device memory. As a side effect you will also see significant reduction in app binary size (~50% savings).

 

For more details about the existing iOS devices that support arm64 architecture, refer to this link

 
ArcGIS Runtime 100.2.1

AppStudio for ArcGIS 3.0 now supports ArcGIS Runtime 100.2.1. This will allows users to create and build apps with ArcGIS Runtime 100.1 or higher. See https://developers.arcgis.com/qt/latest/qml/guide/release-notes.htm


Qt 5.10 and iOS 10

AppStudio for ArcGIS 3.0 comes with an upgrade to the Qt framework from version 5.9.1 to 5.10. Qt 5.10 includes 100+ bug fixes along with lots of new features, including Text-to-Speech. For more information, refer to: https://wiki.qt.io/New_Features_in_Qt_5.10 .

To benefit from this, the minimum supported iOS version in AppStudio has changed to iOS 10.  

Other Enhancements

AppStudio for ArcGIS  3.0 comes with bug fixes as well as improvements in desktop tools, including UI, improvements in Cloud Make, support for high precision GNSS devices, and support for Android Runtime Permission Model.

 

Beta Program

As you can see some of the changes outlined above might seem scary at first, so we want you to test drive these new changes with us and give us feedback.

 

We are introducing a beta program for AppStudio for ArcGIS 3.0. We encourage you to participate in the beta program to try out new features, report bugs you may find, and ensure your AppStudio apps work well. More information about the Beta Program will be available in a Beta Release Blog Post which will be coming soon.