This page provides details about enhancements in the 200.5 release of ArcGIS Maps SDK for Swift. It also lists deprecations, resolved issues, known issues, and more.
200.5.1
Issues Resolved
-
Developing apps with Xcode 16 generates
Undefined Symbol
build errors. Version 200.5.1 fixes this by removing the offending@preconcurrency
attribute from ArcGIS Maps SDK for Swift and is required to develop apps using Xcode 16. See the post on Esri Community for more information.The removal of the
@preconcurrency
attribute may have an impact on your app if you pass non-sendable values to some affected API. This depends on your project's concurrency checking setting and Swift language mode.-
Minimal or targeted strict concurrency checking: You will not see any warnings or errors.
-
Complete strict concurrency checking: You will see a warning
Type '
. This warning can be addressed by making the type adoptMy Non Sendable Type' does not conform to the ' Sendable' protocol; this is an error in the Swift 6 language mode Sendable
protocol or by using anotherSendable
type. -
Swift 6 language mode: You will see an error
Type '
. This error can be addressed by making the type adoptMy Non Sendable Type' does not conform to the Sendable protocol Sendable
protocol or by using anotherSendable
type.
The following API are affected:
-
ArcadeEvaluator.evaluate(withProfileVariables:)
-
CustomDynamicEntityFeedEvent.newObservation(geometry:attributes:)
-
DictionarySymbolStyle.symbol(attributes:)
-
Feature.setAttributeValue(_:forKey:)
-
FeatureTable.makeFeature(attributes:geometry:)
-
Graphic.init(geometry:attributes:symbol:)
-
KMLPlacemark.setAttributeValue(_:forKey:)
-
Location.init(position:horizontalAccuracy:verticalAccuracy:speed:course:isLastKnown:timestamp:additionalSourceProperties:)
-
UniqueValue.init(description:label:symbol:values:alternateSymbols:)
-
UniqueValue.addValues(_:)
-
UniqueValue.addValue(_:)
-
UniqueValue.insertValues(_:at:)
-
UniqueValue.insertValue(_:at:)
-
UniqueValue.removeValues(_:)
-
UniqueValue.removeValue(_:)
-
200.5
Enhancements
Geometry editor
Reticle
A ReticleVertexTool
is now available for the GeometryEditor
, introducing a new way of creating and editing geometries tailored for touch interactions. The tool allows a user of a touch device to clearly see where vertices will be created or moved to, without visual feedback being hidden by fingers or a stylus.
When the ReticleVertexTool
is active and the GeometryEditor
started, pan and zoom the map to place the reticle crosshairs at the required position, then tap to add a vertex.
Place the reticle over an existing vertex and tap to begin a move. Drag the map to place the reticle crosshairs at the new position, then tap a second time to complete the move.
This can be especially useful when using snapping with touch, allowing a user to clearly see which vertices and edges of snap source geometries will be snapped to.
If your users are currently using the magnifier on touch devices to perform edits, you may wish to consider updating your app to take advantage of this new capability. When the reticle is visible, the magnifier will not appear.
Attribute editing with feature forms
Feature form attachments
The new AttachmentsFormElement
allows the feature form API and toolkit component to integrate attachment editing into the form experience. When a FeatureForm
object is created with a feature that has attachments enabled, the FeatureForm.defaultAttachmentsElement
will be populated with a new element object that can be used along with the other elements in the FeatureForm.elements
collection.
The AttachmentsFormElement
allows adding, deleting, and renaming of new and existing attachments on the feature. The attachment changes are saved or discarded along with all the attribute edits made on the form.
The toolkit component also includes the ability to:
- preview attachment thumbnails
- download and open the full attachment for viewing
- capture a new attachment from the device camera
- add attachments from a file or gallery
Finish editing
The new FeatureForm.finishEditing()
method has been added as a complement to FeatureForm.discardEdits()
, and should be called in order to persist changes made using the form to the geodatabase. The call will automatically add or update the feature (based on whether it is a new or pre-existing feature) and persist all the attachment changes.
Check for calculated input values
The new FieldFormElement.hasValueExpression
property allows API users to customize behaviors like appropriate error messages based upon whether the FieldFormElement.value
is calculated or was entered by the app user.
Support for barcode scanner input
The BarcodeScannerFormInput
type was added to the ArcGIS Native Maps SDK to support those API users that need to integrate with external scanning hardware. Note that the Feature Form toolkit component does not yet support elements using BarcodeScannerFormInput
.
Geotriggers
Support for dynamic feature fences
If you use a FeatureCollectionTable
or an ArcGISFeatureTable
to create your FeatureFenceParameters
and the features are updated, the GeotriggerMonitor
will take into account new, updated, or deleted feature fences. This applies to features in the app that are updated locally (through offline sync), and remotely (via a feature service with a refresh interval set).
Utility network
Utility network synchronization
Utility networks can now be edited offline in a mobile geodatabase and synchronized back to an ArcGIS Enterprise 11.3 feature service. Changes made on the client app can be sent up to the feature service (this is referred to as an upload). Changes made on the feature service data can be brought down to the client's mobile geodatabase (this is referred to as a download). Both upload and download can also be completed in a single synchronized bidirectional operation.
Download-only sync is now supported on read-only sync-enabled mobile geodatabases generated with UtilityNetworkSyncMode.syncSystemAndTopologyTables
from ArcGIS Enterprise 11.3 feature services with feature editing capabilities disabled. A download-only sync will automatically incorporate changes into the utility network topology.
Reconcile branch version
Branch-versioned feature services intended for offline sync will typically have sync options set to "Create a version for each download map". Creating a sync-enabled mobile geodatabase based on such a feature service creates a dedicated version for that geodatabase. This version must be reconciled with the default version in order for changes posted to the default version to be downloaded to the client on the next sync.
The new OfflineMapSyncParameters.reconcileBranchVersion
and SyncGeodatabaseParameters.reconcileBranchVersion
properties allow a sync call to reconcile a sync-enabled mobile geodatabase's version to the default version first in order to pull down any recently posted changes during the sync.
Use SyncCapabilities.supportsBranchVersionReconcile
to determine whether the parameter is supported by the feature service.
Trace and edit offline utility networks
In ArcGIS Enterprise 11.3 feature services, mobile geodatabases can be both editable and traceable when created with both the UtilityNetworkSyncMode.syncSystemAndTopologyTables
and SyncModel.geodatabase
options. After an editable and traceable mobile geodatabase is edited, the utility network's topology can be validated to clean up any dirty areas so the edits are reflected in trace results.
Edit associations
Editing associations that model connectivity, containment, and structural attachment between nonspatial and non-coincident network features is now supported by ArcGIS Maps SDK for Native Apps. This requires an Advanced Editing extension license and is supported for utility networks with schema version 4 or higher.
To add a new association, construct a new UtilityAssociation
object, check that it is configured correctly with UtilityNetwork.canAdd()
, and then call the UtilityNetwork.add()
method.
To delete an existing association, query for the UtilityAssociation
object, check that deleting associations is permitted with UtilityNetwork.canDeleteAssociations
, and finally call UtilityNetwork.delete(UtilityAssociation)
.
Validate consistency offline
Validate consistency is now supported offline. Setting UtilityTraceConfiguration.validatesConsistency()
to true ensures reliability and accuracy of trace operations by throwing an error if dirty areas exist within the boundaries of the trace. Support is available for schema version 4 or higher mobile geodatabases with full utility network topology.
Validate network topology offline
Calling the UtilityNetwork.validateNetworkTopology()
method is now supported for offline utility networks with full topology. Validating network topology will clean up dirty areas. This requires an Advanced Editing extension license. Check the utility network's UtilityNetworkCapabilities.supportsValidateNetworkTopology
property to determine whether it supports validation.
Utility network schema version 7
Utility network schema version 7 is now supported by ArcGIS Maps SDK for Native Apps. This provides support for 64-bit Object IDs and big integer fields in addition to other enhancements. See the ArcGIS Pro documentation Upgrade to Utility Network Version 7 for details.
Indoor positioning (IPS)
IndoorPositioningDefinition
The IndoorPositioningDefinition
class now has new properties that describe the origin of the data used for indoor positioning as well as the radio type.
IndoorsLocationDataSource
IndoorsLocationDataSource
now allows your app to receive detailed information messages from the IPS. When listening, your app can record information messages (into a file, for example) for troubleshooting issues on the client. You can enable receiving information messages with the new setting infoMessagesAreEnabled
in the IndoorsLocationDataSourceConfiguration
class.
Symbology
Renderer support for ArcGIS scene layers
You can now update or set a new renderer on an ArcGISSceneLayer
of type 3D object scene layer or point scene layer. The types of renderer supported by these data types are SimpleRenderer
, ClassBreaksRenderer
or UniqueValueRenderer
.
3DObjects use a mesh symbol built with a material fill symbol layer to display. You can now create a mesh symbol using the new MultiLayerMeshSymbol
symbol type and the MaterialFillSymbolLayer
symbol layer type.
Full support for Arcade expressions in cluster popups
ArcGIS Maps SDKs for Native Apps now provides full support for the $aggregated
variable in the Arcade feature reduction popups. This allows access to the full set of features in a cluster when writing popup expressions.
Cartographic Information Model (CIM) specification
ArcGIS Maps SDKs for Native Apps now supports the latest CIM specification (version 3.3).
Basemaps
Disputed boundary display
A new worldview
property on the BasemapStyleParameters
class allows the display of different representations of disputed boundaries on a Basemap
.
Dynamic basemap styles service updates
This release adds a loadable BasemapStylesService
class that retrieves information about the latest features available in the service. Once loaded, the information from the service is presented in a structured and consistent manner using the BasemapStylesServiceInfo
, BasemapStyleInfo
, basemapstylelanguage
, and Worldview
classes. This enhancement allows the implementation of basemap galleries in applications that automatically add new features to the basemap styles service, without requiring a code change.
New basemap style
The ArcGIS Outdoor style is now available in the Native Maps SDKs.
KML
Extended data
ArcGIS Maps SDK for Native Apps now supports parsing of <Extended
data elements, enabling the inclusion of custom metadata within KML files. This enhancement allows developers to embed and visualize additional rich metadata from their KML files.
KML can include both schema-based and non-schema extended data:
-
Schema-based data: Define and use KML schemas to structure extended data, ensuring consistency and clarity. This includes support for
<Schema
and> <Schema
elements, allowing you to define custom data structures.Data > -
Non-schema data: Support for arbitrary key-value pairs through the use of
<Data
elements, providing flexibility for embedding a wide range of metadata without predefined schemas>
Multitrack rendering
With the current release, rendering of multi-tracks in KML is supported. Multitrack <gx
combines multiple individual tracks <gx
into one multitrack so that they can be displayed as sections of one single path. Depending on the value of <gx
element, the icon will stop at the end of one track and jump immediately to the start of the next one or continue on an interpolated path that is between the two tracks.
Popups
Popup date formats
Additional formats for displaying dates in a popup are supported with this release.
PopupDateFormat enum value | Example |
---|---|
dayShortMonthYearLongTime | "Jun 11, 2019, 9:49:00 PM" |
dayShortMonthYearLongTime24 | "Jun 11, 2019, 21:49:00" |
dayShortMonthYearShortTime | "Jun 11, 2019, 9:49 PM" |
dayShortMonthYearShortTime24 | "Jun 11, 2019, 21:49" |
longDateLongTime | "Tuesday, June 11, 2019, 9:49:00 PM" |
longDateLongTime24 | "Tuesday, June 11, 2019, 21:49:00" |
longDateShortTime | "Tuesday, June 11, 2019, 9:49 PM" |
longDateShortTime24 | "Tuesday, June 11, 2019, 21:49" |
longMonthDayYearLongTime | "June 11, 2019, 9:49:00 PM" |
longMonthDayYearLongTime24 | "June 11, 2019, 21:49:00" |
longMonthDayYearShortTime | "June 11, 2019, 9:49 PM" |
longMonthDayYearShortTime24 | "June 11, 2019, 21:49" |
Licensing
Edit feature services with a Lite license for data hosted by ArcGIS Location Platform
In general, a Native SDK needs to be licensed at the Basic license level to edit features in a private feature service. In this release, we've enabled the ability to edit features in a private feature service at the Lite license level when the feature data is hosted by ArcGIS Location Platform. The data in this case, is owned by an ArcGIS Location Platform account. This new support applies for both connected and offline workflows. Feature services hosted by ArcGIS Location Platform are always private as they require authentication to access. For more information on data hosting with ArcGIS Location Platform, see the Portal and data services guide.
SDK enhancements
Preparing for Swift 6
This release makes it easier for your apps to enable Swift Complete Strict Concurrency Checking and ultimately adopt the Swift 6 Language Mode. Many of our types have been audited for thread safety and marked @
so you can easily use them without worrying about data races. You can compile your apps with strict concurrency checking without resorting to @preconcurrency
attribute when importing ArcGIS in order to silence concurrency warnings. Some closures in public APIs are marked as @
and some APIs as @
. As a result, you may need to audit your app code to compile with strict concurrency checking.
If you are not ready to transition to Complete Strict Concurrency Checking or Swift 6, you don't have to. The @preconcurrency
attribute has been utilized to allow your app to incrementally adopt the latest Swift concurrency related safety measures.
Breaking API changes
There are no breaking changes in this release.
Behavior changes
GeometryEngine.cut()
now supports true curve input geometries, preserving true curves in the result geometries.GeometryEngine.geodeticBuffer()
now supports true curve input geometries, producing densified curves in the result geometries.GeotriggerMonitor
will take into account new, updated, or deleted feature fences that are created from aFeatureCollectionTable
orArcGISFeatureTable
if the features are updated locally within the app, through offline sync, or remotely (via a feature service with a refresh interval set).- Realistic sun: In a scene view, the sun now appears at the correct position in the sky for the specified date, time of day, and geographic location. This feature is enabled only when sunlighting is turned on the
SceneView
class. - The spatial reference of the
GeoModel
is now automatically adopted when loading aServiceFeatureTable
or anOGCFeatureCollectionTable
belonging to a layer in thatGeoModel
, as long as the layer type supports changing the spatial reference. Previously, the tables were loaded in the layer's spatial reference.
- Popup date formats that end with "LE" (little-endian) are now fixed patterns, and always use "day-month-year" order for dates regardless of the device's locale.
Deprecations
API deprecations
- The cases
application
,Locale default
,global
, andlocal
are deprecated on theBasemapStyleLanguage
enumeration. UseBasemapStyleLanguage.strategic
instead. - The case
specific(
is deprecated on theLocale) BasemapStyleLanguage
enumeration. UseBasemapStyleLanguage.specific
instead.
OS and framework deprecations
There are no OS or framework deprecations in this release.
Issues resolved
Issues addressed in this release are listed below.
- BUG-000154793: The clone property for the feature layer does not clone the respective
Label
to a new feature layer object.Definitions - ENH-000158877: Allow a way to update the features in that trigger geotriggers in ArcGIS Maps SDK for Swift (NOTE: this ENH is for .NET but the enhancement is not API specific).
- BUG-000163776: Dictionary Renderer Expression scaling renders incorrectly in 3D.
- BUG-000166643: Repeatedly opening a SceneView intermittently crashes, when the scene has a vector tiled layer.
- BUG-000167816:
Geodatabase
causes Esri.ArcGISRuntime.ArcGISRuntimeException: No Data.Feature Table. Load Aysnc - BUG-000168210: Getting a 'no-data' error when trying to load a geodatabase feature table from a mobile geodatabase.
- BUG-000169090: Improve level of detail selection when no elevation tiles are available.
- Issue reported on Esri Community: Handle missing ows:Constraint in WMTS Capabilities.
- Issue reported on Esri Community: Crash when clearing image overlays from the collection.
Known issues
- Developing apps with Xcode 16 generates
Undefined Symbol
build errors. You must upgrade to ArcGIS Maps SDK for Swift version 200.5.1 if using Xcode 16. See this post on Esri Community and the system requirements for details.
Changes in samples
New samples
- Add ENC exchange set
- Add raster from service
- Apply mosaic rule to rasters
- Apply scheduled updates to preplanned map area
- Browse OGC API feature service
- Create dynamic basemap gallery
- Edit and sync features with feature service
- Edit feature attachments
- Edit features with feature-linked annotation
- Edit geodatabase with transactions
- Edit with branch versioning
- Filter by definition expression or display filter
- Generate offline map with custom parameters
- Generate offline map with local basemap
- Identify features in WMS layer
- Match viewpoint of geo views
- Monitor changes to draw status
- Monitor changes to layer view state
- Query related features
- Select features in scene layer
- Set reference scale
- Set surface navigation constraint
- Show grid
- Show scale bar
- Show service area
- Show viewshed from point on map
- Snap geometry edits
Enhancements
Sample Viewer
- Increased minimum deployment to iOS 16 and iPadOS 16.
- Replaced uses of deprecated APIs, such as
Navigation
andView Locale.uses
.Metric System - Removed the custom
View.sheet
modifier.
- Replaced uses of deprecated APIs, such as
- Updated the Categories page to:
- Use three columns instead of two on iPad and Mac Catalyst.
- Show the sidebar by default when the application is launched.
- Moved the search into a new "All" category.
- Added text to the search that shows when there are no results for the current query.
- Added "Done" buttons in all popovers and sheets for dismissal in landscape mode.
- Updated the API key instructions throughout the project.
- Included an App Store link in the Samples root README.
Samples
- Added support for Emlid Reach RX MFi to Show device location with NMEA data sources.
- Modified Create and edit geometries to use the new
Reticle
.Vertex Tool - Improved the floor filter in Browse building floors to adjust its position based on the attribution bar.
- Updated the Add 3D tiles layer sample to use a public 3D tileset service.
- Provided additional information on graphics overlays in the Display clusters README.
- Added additional information on the Advanced Editing extension to the Validate utility network topology README.
- Modified Configure basemap style parameters to use the updated
Basemap
API.Style Parameters - Changed the product name from "Samples" to "ArcGIS Maps SDK Samples".
- Upgraded the project format from Xcode 13 to Xcode 15.
Bug fixes
Sample Viewer
- Enabled targeted strict concurrency and addressed related errors and warnings.
- Corrected category titles being cut off on iPhone Pro Max.
- Fixed the Favorites "Edit" button, which would cause samples in other categories to become untappable.
- Worked around an issue where a
Map
would jump to the bottom of its map when a keyboard was presented in landscape mode.View
Samples
- Fixed an empty map that would show in Augment reality to show hidden infrastructure on iPad.
- Corrected the "Cancel" button in Add features with contingent values to remove the feature when the contingent values are valid.
- Resolved a
Task
retain cycle in Create and edit geometries. - Moved Play KML tour from the "Layers" to the more appropriate "Visualization" category.
- Added navigation back buttons to some samples that were missing them.
- Refactored Manage operational layers to fix a bug where removed layers would disappear after the "Manage Layers" view was closed.
Related topics
- System requirements for 200.5
- Install and set up
- Display a map (Tutorial)
- Product Life Cycle (Esri Support Site)