Skip navigation
All Places > AppStudio for ArcGIS > Blog > 2019 > September
2019

 AppStudio for ArcGIS is a cross-platform application development tool which enables our customers to create apps that work on a range of devices and platforms. Be it mobile devices running Android or iOS, or desktops with Windows, macOS or Linux, we strive to provide a seamless experience to our customers. 

 

In order to ensure that your apps continue to work on all your devices, we proactively test each update of our supported platforms to capture new issues and attempt to resolve them before you can find them! While testing our apps with iOS 13, we found a couple of issues which need your attention.  

 

 

Accessing the photo gallery on iOS 13 

 

We found that on iOS 13, any app that tries to open the iOS photo gallery freezes while accessing it. On further investigation, we found that this was caused due to an underlying bug in the Qt Framework, the details of which can be found in the Qt bug reports website  . This bug has been resolved and the fix will be available in Qt 5.12.6. However, since AppStudio for ArcGIS 4.0 is built on Qt 5.12.3, we have been working with the Qt Company to obtain a patch for this bug and we have already applied the patch to our cloud Make build servers.  

 

 

How does this affect you and what do you need to do? 

 

This bug only affects apps running on iOS 13 and that allow users to access the photo gallery to browse photos saved on their iOS device. If you have recently built such apps using Cloud Make from AppStudio for ArcGIS 4.0, a simple re-build of your app should fix this issue.  

 

If you are using Player to test or deploy your apps, we will patch the player and resubmit to the app store. So a simple update to player from app store should fix this issue. 

 

If you are planning to build your iOS app using Local Make, please contact us at appstudiofeedback@esri.com. Since the fix for this issue needs to be applied to the Qt installation, our team can provide guidance and support to you to implement the fix. 

 

 

New requirement while publishing iOS apps to Apple App Store 

 

Recently Apple has updated the requirements that apps need to fulfil before they can be published on the App Store. Starting with iOS 13, apps that need to access Bluetooth need to include a new Product List key – NSBluetoothAlwaysUsageDescription. The details of this new key are available in Apple’s developer documentation   .  With this hotfix, we have updated our cloud Make build servers to include this key in iOS apps that are built using cloud Make. If you intend to use local Make to build your iOS app and publish it to App Store, our team can guide you to ensure that your app meets this requirement. 

 

 

I hope this has been helpful and we look forward to your feedback at appstudiofeedback@esri.com.  

 

 

  • New to AppStudio? Check out this website    to learn more about what AppStudio for ArcGIS can do to you and your organization. 
  • Become an AppStudio for ArcGIS developer! Watch this video    on how to sign up for a free trial. 
  • Follow us on Twitter @AppStudioArcGIS    to keep up-to-date on the latest information and let us know about your creations built using AppStudio to be featured in the AppStudio Showcase   .
  • The AppStudio team periodically hosts workshops and webinars; please sign up    for the AppStudio newsletter if you are interested in information regarding AppStudio events. 

 

The AppStudio for ArcGIS 4.0 release recently rolled out with many exciting new features and enhancements. In this blog, let’s look at the new features and improvements added to the  AppStudio Player for ArcGIS. The Player allows you to instantly view AppStudio apps on a real device (desktop or mobile) without requiring a full build and deployment cycle.

 

You can download the latest Player from the Apple App store or Google Play store.

 

1. New setting to change languages on the fly 

AppStudio Player is available in over thirty languages, and by default, it will be set to the language of your device. However, if you want to test an app in a different language, this required that you change the language setting for the entire device. 

 

We are excited to bring a brand-new feature in this release that allows you to change the app’s language even without changing the device’s language. This new feature brings huge benefits, especially when testing app localization. (this could save you a whole lot of time). If your AppStudio app includes translation files, you can easily test your app on different languages by changing the Player’s language in the Settings page.   

 

         

                                                                               Player Language setting

 

2. New setting to clear local apps  

A recent request from our customers was to have the ability to clear or remove all the locally downloaded apps at once. We are excited to bring this handy functionality into AppStudio 4.0, which is available in the Settings page.   

 

          

                                                                           Player Clear Local Apps setting

 

3. AppStudio Player Enterprise template now supports opening web apps 

The AppStudio Player template is widely used as an enterprise distribution solution, and our users love to share and distribute their organization’s apps through this custom Player with their custom branding and configurations. One popular request we’ve heard from our users is the ability to open web apps along with the AppStudio native apps. 

We are excited to announce that with the 4.0 release, we have added a new Web Apps page in Player’s enterprise template to open web apps such as web maps, web scenes, Web AppBuilder apps, Story Maps, and Survey123 web forms available in your organization.  

Note: that this feature is only available if you are deploying your own version of the AppStudio Player enterprise template. Please let us know if you want us to support this feature also in the released app store version of AppStudio Player. 

          

  

                                                                       Open web apps in Player

 

Follow the following quick steps to configure an enterprise Player template to include your own web apps (feel free to go to step 2 if you already have a custom Player).  

 

Please make sure you have the latest version of AppStudio Desktop (4.0), and it is licensed at the Developer Edition.  

 

Step 1: 

  • Open AppStudio for ArcGIS 
  • Sign in to your ArcGIS Online or Enterprise account with the AppStudio for ArcGIS Developer Edition license  
  • Click on the purple New App button, navigate to the Enterprise tab, select Player (4.0 Template), and click on the Create button.  
  • Upload the Player you created 
  • Click on the Settings tool on the side panel  
  • Go to Licensing section and Register an ArcGIS Client ID to allow users to sign into the Player with OAuth authentication, then click Apply 

 

Step 2: 

  • Create a new group in your organization and add your web apps in it. The group can be private or public. If the group is private, you will need to sign into Player to access the group and the web apps within the group. 
  • Copy the group ID   

 

Step 3: 

  • Open the Settings tool while your custom Player is selected in AppStudio Desktop 
  • Go to Properties > General tab 
  • Provide the group ID that you have created from step 2 and enter it in the Web Apps Group ID field 
  • Click on Apply and run your Player app to test 

 

Create a new enterprise Player template

 

 

If you wish to learn more about customizing AppStudio Player, please check this tutorial.  

 

4. Bug fixes and other enhancements:  

  • Support for iOS 13  
  • Fixed the bug where local apps were not showing in emulators and simulators  
  • Fixed the bug where the Reset button is not showing when Sample page is hidden (enterprise template) 
  • Fixed the bug where Remote console option was still showing on the app loader side menu when disabling this property in settings (enterprise template) 
  • Fixed a few texts overflows issues in the Player item cards  
  • Fixed a bug where the wrong IP address was displayed in Remote Console while connecting to the desktop Console  
  • Few enchantments made to launching Player via the command line (desktop) 
  • Player enterprise template now supports showing the branding icon in both Home and About page instead of the default icon.  
  • New 4.0 samples and templates are now available in the Player Samples page 
  • Runtime for ArcGIS included in the Player updated to the latest version 100.6  

  

We hope you like the new features and enhancements added to AppStudio Player and its Enterprise template. We would love to hear feedback or any missing feature request from you to make your app development experience easier and faster. Please reach us at appstudiofeedback@esri.com or contact Esri support.  

 

 

 

 

  • New to AppStudio? Check out this website to learn more about what AppStudio for ArcGIS can do to you and your organization.
  • Become an AppStudio for ArcGIS developer! Watch this video on how to sign up for a free trial.
  • Follow us on Twitter @AppStudioArcGIS to keep up-to-date on the latest information and let us know about your creations built using AppStudio to be featured in the AppStudio Showcase.
  • The AppStudio team periodically hosts workshops and webinars; please sign up for the AppStudio newsletter if you are interested in information regarding AppStudio events.

The App Templates in AppStudio Desktop have been updated to work with the AppStudio 4.0. All four templates now support Runtime 100.6. Here is a list of other updates to the templates in this release: 

 

3D Scene viewer

 

  • In the AppStudio 4.0 beta release we introduced a new 3D Scene Viewer template - to discover, browse and interact with ArcGIS 3D maps (web scenes). Based on your feedback we have now added support for the offline scenes aka mobile scene packages in this release. Similar to other AppStudio template apps, you configure the template to consume your desired global web scenes and mobile scene packages by providing their item ids hosted within your organization or publicly across ArcGIS Platform.
  • This template now allows you to do sign-in to your organization across ArcGIS Platform to display the secured content (web scenes & mobile scene packages) and to download mobile scene packages. Once downloaded onto your device, the mobile scene package will be available to operate without any internet connection. Below is a quick video on how to display a mobile scene package. 

 

Note: To allow users to download a mobile scene package without signing in to an ArcGIS organization, Enable Anonymous Use can be used while creating, if you have licensed ArcGIS Pro with the ArcGIS Publisher extension.

 

Let us know what do you want to see in the future release in the comment below or by email.

 

 

Map Viewer

 

  • BUG-000122909 - Resolved issue to avoid mobile device screen locking while a mobile map package is being downloaded. If a user is downloading one or multiple mobile map packages, the device wouldn't go in sleep mode until the download is complete or user manually turns off the screen. 
  • The template now checks if a client ID is available before the user continues with a sign-in operation. If the client ID is not provided in the app, it will prompt the user.
  • Online and offline gallery sections now have individual limits to show the number of items in the gallery. For example, if 10 is set as the limit, the gallery will load up to 10 items each for the two categories. Previously the limit was shared between the two.  
  • AppFramework.Controls library reference has been removed from the Map Viewer template as the AppStudio Framework has deprecated this library.
  • Map Viewer template has been updated to use ECMA 7.0 javascript promises.
  • Other bug fixes and UI enhancements.

 

Quick Report

 

  • BUG-000124162- Resolved issue with submitting a report with audio or video attachments when submitting report through saved drafts.
  • AppFramework.Controls library reference has been removed from the Quick Report template as the AppStudio Framework has deprecated this library
  • Other bug fixes and UI enhancements

 

Map Tour

 

  • AppFramework.Controls library reference has been removed from the Map Tour template as the AppStudio Framework has deprecated this library
  • Other bug fixes and UI enhancements

 

 

Please feel free to test and provide your feedback through the GeoNet or emailing the team at appstudiofeedback@esri.com.

 

 

Become an AppStudio for ArcGIS developer! Watch this video on how to sign up for a free trial.

 

Follow us on Twitter @AppStudioArcGIS to keep up-to-date on the latest information and let us know about your creations built using AppStudio to be featured in the AppStudio Showcase.

 

The AppStudio team periodically hosts workshops and webinars; please click on this link to leave your email if you are interested in information regarding AppStudio events.

Have you made a great app for outdoor use, that would benefit from high accuracy location? Do your users want to improve the location that they capture or report in your app, by using an external receiver? Do you want to report a location in your app that is being fed from a receiver that is remote to you but available over a network? In each of these cases, you will want to add the ability to search for, and connect to, an external GNSS receiver in your app.

 

We have recently added this ability to a number of our apps – Trek2There, Survey123, QuickCapture – and now we have made that work available to you, as a small collection of custom components, so you can drop them into your own app.

 

There are a few considerations you need to evaluate before adding GNSS device discovery to your app – what hardware are you intending your app to be used on, what receivers you want to support – jump to the end of this post to explore those.

 

For now, I want to show you the mechanics of making this work. The code that you can add to your app is available as an AppStudio sample called GNSS Discover. You can download this directly to your computer and copy and paste contents of it to your app.

 

The following steps will demonstrate how to add GNSS device discovery to the Hello World (Runtime) starter app. I’ve deliberately chosen this lightweight app so you can see the few steps that it takes to add this complex functionality.

 

        1. Launch and sign in to AppStudio Desktop Edition.
        2. Search for and download, the GNSS Discover sample app.
        3. Click New App, choose Hello World (Runtime) and click Create.
        4. Select the app you just created in the AppStudio gallery, and from the side menu choose Files. This will launch a file browser showing you the files created for your new app.
        5. In the AppStudio gallery, select the GNSS Discover app that you downloaded already, and from the side menu choose Files. This will launch another file browser showing you the files of the sample app.
        6. Copy the subfolder called GNSSPlugin, from the sample app to the folder of your new app.
        7. Close both file browsers.
        8. In the AppStudio gallery, select your new app (created from the Hello World starter app) and from the side menu select Edit. Your app will now launch in your default code editor. You will make edits to the MyApp.qml file only.
        9. After the existing import statements at the top of the file, add the following reference for your app to be able to use the contents of the folder that you just copied to your project:

          import "./GNSSPlugin"

        10. Scroll to the bottom of the MyApp.qml file. Before the last curly brace, you need to add the following code. This code is also in the GNSSDiscover.qml of the GNSS Discover sample app. You can open this file and copy and paste from there if you prefer.

          // Manage connections to GNSS providers

          GNSSManager {

              id: gnssManager

              gnssSettingsPages: gnssSettingsPages

          }

          // GNSS settings UI

          GNSSSettingsPages {

              id: gnssSettingsPages

              gnssManager: gnssManager

          }

          // GNSS status UI

          GNSSStatusPages {

              id: gnssStatusPages

              gnssManager: gnssManager

              gnssSettingsPages: gnssSettingsPages

          }

        11. The GNSSManager that you have just added provides a new position source that will communicate with both your internal position source and any configured external position source. To use this, change the positionSource of the existing locationDisplay component, to be gnssManager. It should look like this:

          locationDisplay {

              positionSource: gnssManager

          }

          Save your work. If you choose to run your app at this stage (Alt+Shift+R), you will see the map launch and it will have two buttons, a home and location  button.

          Click the location button and see that the map will center on your current location. By default, the app is using your devices internal position source. To be able to use an external receiver, you need to be able to select one. We will next add a settings button , so you have somewhere to select a new receiver.

           

        12. Copy the existing locationButton component and paste a copy of it immediately below the original one.
        13. Change the id of the copied component to be settingsButton.
        14. Change the source to be

          "./GNSSPlugin/images/round_settings_white_24dp.png"

        15. Change the name of the parameters in the onHoveredChanged event of this button to be

          settingsButton

        16. Remove the contents of the onClicked event and replace with

          gnssSettingsPages.showLocationSettings()

          Run your app. See that there is now an additional button with the settings icon. Click on this button and see the settings page. On this page you can choose to connect to a GNSS receiver that is connected to your device.

           

        17. As an optional bonus – would you like to make the color of the settings button match the others? You can do this with a color overlay. Start by giving your settings button image an id, for example
        18. Add the following code immediately after your button image component:

          ColorOverlay {

          anchors.fill: settingsButtonImage

          source: settingsButtonImage

          color: "black"

          }

          Ensure that the name for anchors.fill and source is the same as the name that your gave your settings button image.

        19. For the color overlay component to work, you will need to add one more import statement. This component is part of the Qt Graphic Effects plugin in, so at the top of the file where the other import statements are, add the following:

          import QtGraphicalEffects 1.12

          Save your work and run your app. See that the settings button is now the same color as the other buttons.

           


          Instead of cloning and modifying an existing button, there is a settings button component in the GNSS Discover sample that you also could have used.  Steps 12-17 show how you add new functionality to your app whilst maintaining the existing presentation of tools.

           

          Also included in the GNSS Discover sample is a status button that indicates when the position source is connected, and when clicked, displays information coming from that position source. In the next step, we will add this button as is.

           

        20. After the last button in your app, paste the following (this code is also in the GNSS Discover sample)

          GNSSStatusButton{

          gnssStatusPages: gnssStatusPages

          }

Save your work and run your app. The status button is only visible when the location is active, so first click the location button for the status button to appear.  See that the status button has different styling to your other buttons. You can choose to style it as you wish. Click on the status button to see information coming from the position source.

 

 

You can add the components from the GNSS Discover sample to any other app in a similar way. Just include the GNSSPlugin folder in your app and reference the GNSS Manager, GNSS Settings and GNSS Status pages in your app. You can choose how to launch the settings and status pages to suit your needs. For alternative examples on how to launch those pages, take a look at the code for the GNSS Discover sample itself. This sample shows buttons for the status and settings pages, that appear on the toolbar of the sample app.

 

 

Things to consider

 

An app that needs to communicate with external GNSS hardware needs the high accuracy location and Bluetooth capabilities to be set.

Also, to be able to work on iOS devices, the receiver must be part of the MFi program as well as support the output of NMEA sentences.

 

Whilst building your app, we recommend you test in AppStudio Player. Player already has many GNSS receivers whitelisted so you can test your app on iOS before whitelisting your own app.

 

To learn more about using GNSS receivers with your apps see https://doc.arcgis.com/en/appstudio/api-guide/apihighaccuracygps.htm