{"id":624292,"date":"2019-10-03T15:18:25","date_gmt":"2019-10-03T22:18:25","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=624292"},"modified":"2021-02-22T12:24:00","modified_gmt":"2021-02-22T20:24:00","slug":"whats-new-in-appstudio-appframework-version-4-0","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0","title":{"rendered":"What\u2019s New in AppStudio Framework Version 4.0"},"author":7721,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[37101],"tags":[23441,481242,24531],"industry":[],"product":[36621],"class_list":["post-624292","blog","type-blog","status-publish","format-standard","hentry","category-announcements","tag-android","tag-appframework","tag-ios","product-appstudio"],"acf":{"short_description":"The\u00a0AppStudio Framework version 4.0 brings new features and enhancements for building cross-platform native apps. ","flexible_content":[{"acf_fc_layout":"content","content":"<p><span data-contrast=\"auto\">The\u00a0<\/span><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/extend-apps\/appframework.htm\"><span data-contrast=\"auto\">AppStudio Framework<\/span><\/a><span data-contrast=\"auto\">\u00a0(<\/span><span data-contrast=\"auto\">AppFramework<\/span><span data-contrast=\"auto\">) provides QML components used when creating apps in\u00a0<\/span><span data-contrast=\"auto\">AppStudio<\/span><span data-contrast=\"auto\"> for ArcGIS. The <\/span><span data-contrast=\"auto\">AppFramework<\/span><span data-contrast=\"auto\"> library of components is unique in that it has features and capabilities that are neither natively provided by the underlying Qt framework nor the ArcGIS Runtime, but are necessary and commonly used for developing apps. We are excited to share new features and enhancements added\u00a0<\/span><span data-contrast=\"auto\">specifically to\u00a0<\/span><span data-contrast=\"auto\">AppFramework<\/span><span data-contrast=\"auto\">\u00a0in the recent\u00a0<\/span><a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-for-arcgis-4-0-august-2019\/\"><span data-contrast=\"auto\">AppStudio<\/span><span data-contrast=\"auto\">\u00a04.0 release.<\/span><\/a><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h3><strong>Enhancements<\/strong><span data-ccp-props=\"{&quot;134233279&quot;:true}\">\u00a0<\/span><\/h3>\n<ul>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"6\" data-aria-posinset=\"3\" data-aria-level=\"1\"><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-networkrequest\/\"><span data-contrast=\"none\">NetworkRequest component<\/span><\/a><span data-contrast=\"auto\">\u00a0can now return\u00a0<\/span><i><span data-contrast=\"auto\">binary<\/span><\/i><span data-contrast=\"auto\">\u00a0data in memory (useful for downloading and manipulating image data and\/or downloading a file in parts).\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"6\" data-aria-posinset=\"3\" data-aria-level=\"1\"><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-file\/\"><span data-contrast=\"none\">File component<\/span><\/a><span data-contrast=\"auto\">\u00a0now supports writing of\u00a0<\/span><i><span data-contrast=\"auto\">binary<\/span><\/i><span data-contrast=\"auto\"> data (useful for downloading files in chunks, e.g. download managers and P2P sharing applications).<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"-\" data-font=\"Calibri\" data-listid=\"6\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"none\">T<\/span><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-clipboard\/#share-method-1\"><span data-contrast=\"none\">he C<\/span><span data-contrast=\"none\">lipboard\u00a0<\/span><span data-contrast=\"none\">component\u2019s\u00a0<\/span><span data-contrast=\"none\">share<\/span><span data-contrast=\"none\">\u00a0method<\/span><\/a><span data-contrast=\"auto\"> now lets you preview and share files as an image, video, audio, document, etc. When a file URL is copied to the clipboard you can preview and share the file via <\/span><b><i><span data-contrast=\"auto\">AppFramework.clipboard.share<\/span><\/i><\/b><b><i><span data-contrast=\"auto\">()<\/span><\/i><\/b><span data-contrast=\"auto\">.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true}\">\u00a0<\/span><\/li>\n<\/ul>\n"},{"acf_fc_layout":"image","image":{"ID":624542,"id":624542,"title":"ShareSheet","filename":"ShareSheet-2.gif","filesize":539017,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\/sharesheet-3","alt":"Share text, URL, or file sample","author":"7721","description":"","caption":"Share text, URL, or file Sample","name":"sharesheet-3","status":"inherit","uploaded_to":624292,"date":"2019-10-03 00:48:27","modified":"2019-10-03 21:49:10","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":600,"height":600,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2.gif","medium-width":261,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2.gif","medium_large-width":600,"medium_large-height":600,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2.gif","large-width":600,"large-height":600,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2.gif","1536x1536-width":600,"1536x1536-height":600,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2.gif","2048x2048-width":600,"2048x2048-height":600,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2-465x465.gif","card_image-width":465,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/ShareSheet-2.gif","wide_image-width":600,"wide_image-height":600}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3><strong>Permission &amp; Permission Dialog\u00a0[BETA]<\/strong><\/h3>\n<p style=\"padding-left: 80px\"><strong>A.\u00a0 Requesting Permission\u00a0<\/strong><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">If your app needs permission to access system-wide capabilities such as Location, Storage, Bluetooth, etc., then <\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">app\u00a0<\/span><span data-contrast=\"auto\">needs<\/span><span data-contrast=\"auto\">\u00a0to request &amp; grant the appropriate permission in order to function.\u00a0<\/span><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-platform-permissiondialog\/\"><span data-contrast=\"none\">The P<\/span><span data-contrast=\"none\">ermissionDialog<\/span><span data-contrast=\"none\">\u00a0component<\/span><\/a><span data-contrast=\"auto\">\u00a0provides\u00a0<\/span><span data-contrast=\"auto\">an\u00a0<\/span><span data-contrast=\"auto\">interface to request permission at runtime.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">The snippet below demonstrates how to request\u00a0<\/span><span data-contrast=\"auto\">permission for the device\u2019s location<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;335559685&quot;:720}\"> <span class=\"TextRun SCXW146461119 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW146461119 BCX0\">By setting the property\u00a0<\/span><\/span><span class=\"TextRun SCXW146461119 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"SpellingError SCXW146461119 BCX0\">openSettingsWhenDenied<\/span><\/span><span class=\"TextRun SCXW146461119 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW146461119 BCX0\">\u00a0to true, t<\/span><\/span><span class=\"TextRun SCXW146461119 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW146461119 BCX0\">he<\/span><\/span><span class=\"TextRun SCXW146461119 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW146461119 BCX0\">\u00a0<\/span><\/span><span class=\"TextRun SCXW146461119 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW146461119 BCX0\">app\u00a0<\/span><\/span><span class=\"TextRun SCXW146461119 BCX0\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW146461119 BCX0\">opens application settings when permission is denied. <\/span><\/span><\/span><\/p>\n"},{"acf_fc_layout":"image","image":{"ID":625772,"id":625772,"title":"Screen Shot 2019-10-03 at 1.55.12 PM","filename":"Screen-Shot-2019-10-03-at-1.55.12-PM.png","filesize":73647,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\/screen-shot-2019-10-03-at-1-55-12-pm","alt":"","author":"7721","description":"","caption":"","name":"screen-shot-2019-10-03-at-1-55-12-pm","status":"inherit","uploaded_to":624292,"date":"2019-10-03 21:02:49","modified":"2019-10-03 21:02:49","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1458,"height":346,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM.png","medium-width":464,"medium-height":110,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM.png","medium_large-width":768,"medium_large-height":182,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM.png","large-width":1458,"large-height":346,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM.png","1536x1536-width":1458,"1536x1536-height":346,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM.png","2048x2048-width":1458,"2048x2048-height":346,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM-826x196.png","card_image-width":826,"card_image-height":196,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.55.12-PM.png","wide_image-width":1458,"wide_image-height":346}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"image","image":{"ID":624342,"id":624342,"title":"Permission Request Sample","filename":"Permission-iOS.gif","filesize":688508,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\/permission-ios-2","alt":"Permission Request sample","author":"7721","description":"Permission Request sample","caption":"Permission Request Sample","name":"permission-ios-2","status":"inherit","uploaded_to":624292,"date":"2019-10-03 00:14:33","modified":"2019-10-03 21:49:22","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":768,"height":576,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS.gif","medium-width":348,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS.gif","medium_large-width":768,"medium_large-height":576,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS.gif","large-width":768,"large-height":576,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS.gif","1536x1536-width":768,"1536x1536-height":576,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS.gif","2048x2048-width":768,"2048x2048-height":576,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS-620x465.gif","card_image-width":620,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Permission-iOS.gif","wide_image-width":768,"wide_image-height":576}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 80px\"><strong>B. Check for Permission\u00a0<\/strong><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">If your app needs permission to access a capability, you must check whether the app has that permission every single time before you perform the operation. The\u00a0<\/span><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-platform-permission\/\"><span data-contrast=\"none\">Permission<\/span><\/a><span data-contrast=\"auto\">\u00a0singleton provides a method,\u00a0<\/span><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-platform-permission\/#checkPermission-method\"><b><i><span data-contrast=\"none\">checkPermission()<\/span><\/i><\/b><\/a><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">which lets you\u00a0<\/span><span data-contrast=\"auto\">quickly\u00a0<\/span><span data-contrast=\"auto\">determine the status of the permission.\u00a0<\/span><span data-ccp-props=\"{&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">For e<\/span><span data-contrast=\"auto\">xample, t<\/span><span data-contrast=\"auto\">h<\/span><span data-contrast=\"auto\">is<\/span><span data-contrast=\"auto\">\u00a0snippet lets you determine the status of the Location permission.\u00a0<\/span><span data-ccp-props=\"{&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 80px\"><em>Permission.checkPermission(Permission.PermissionTypeLocationWhenInUse)<\/em><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">The method returns an\u00a0<\/span><span data-contrast=\"auto\">e<\/span><span data-contrast=\"auto\">numerator value determining the state as follows:<\/span><span data-ccp-props=\"{&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>PermissionResultGranted\u00a0<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>PermissionResultDenied\u00a0<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>PermissionResultRestricted\u00a0<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>PermissionResultUnknown\u00a0<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 80px\"><strong>C.\u00a0 Service Availability\u00a0<\/strong><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">If your app needs to check the real-time status of a service provided by a device such as Bluetooth or <\/span><span data-contrast=\"auto\">l<\/span><span data-contrast=\"auto\">ocation,\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">Permission singleton provides a method<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0<\/span><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-platform-permission\/#serviceStatus-method\"><b><i><span data-contrast=\"none\">serviceStatus()<\/span><\/i><\/b><\/a><span data-contrast=\"auto\">, which lets you determine the status.\u00a0<\/span><span data-ccp-props=\"{&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">For e<\/span><span data-contrast=\"auto\">xample,<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">this<\/span><span data-contrast=\"auto\">\u00a0snippet lets you determine the status of the Location service<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 80px\"><em>Permission.serviceStatus(Permission.LocationService)\u00a0<\/em><\/p>\n<p style=\"padding-left: 80px\"><span data-contrast=\"auto\">The method returns an\u00a0<\/span><span data-contrast=\"auto\">e<\/span><span data-contrast=\"auto\">num<\/span><span data-contrast=\"auto\">erator<\/span><span data-contrast=\"auto\">\u00a0value\u00a0<\/span><span data-contrast=\"auto\">determining the state as follows:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>ServiceStatusUnknown\u00a0<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>ServiceStatusReset<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>ServiceStatusUnsupported\u00a0<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>ServiceStatusUnauthorized\u00a0<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>ServiceStatusPoweredOff\u00a0<\/em><\/li>\n<li data-leveltext=\"-\" data-font=\"Avenir Next W01\" data-listid=\"5\" data-aria-posinset=\"3\" data-aria-level=\"1\"><em>ServiceStatusPoweredOn\u00a0<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<h3><\/h3>\n<h3><strong>Camera Dialog\u00a0[BETA]\u00a0<\/strong><\/h3>\n<p><span data-contrast=\"auto\">The\u00a0<\/span><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-multimedia-cameradialog\/#details\"><span data-contrast=\"none\">CameraDialog<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">is a lightweight\u00a0<\/span><span data-contrast=\"auto\">component\u00a0<\/span><span data-contrast=\"auto\">that\u00a0<\/span><span data-contrast=\"auto\">provides\u00a0<\/span><span data-contrast=\"auto\">direct\u00a0<\/span><span data-contrast=\"auto\">access to the system camera\u00a0<\/span><span data-contrast=\"auto\">controls\u00a0<\/span><span data-contrast=\"auto\">with the best available resolution\u00a0<\/span><span data-contrast=\"auto\">supported\u00a0<\/span><span data-contrast=\"auto\">by the device. It\u00a0<\/span><span data-contrast=\"auto\">comes with two<\/span><span data-contrast=\"auto\">\u00a0modes<\/span><span data-contrast=\"auto\">\u00a0i.e.,\u00a0<\/span><i><span data-contrast=\"auto\">CameraCaptureModeStillImage<\/span><\/i><span data-contrast=\"auto\">\u00a0and\u00a0<\/span><i><span data-contrast=\"auto\">CameraCaptureModeVideo<\/span><\/i><i><span data-contrast=\"auto\">,<\/span><\/i><span data-contrast=\"auto\"> which lets you capture an image or video respectively. After the capture<\/span><span data-contrast=\"auto\">\u00a0is complete<\/span><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">you\u00a0can\u00a0<\/span><span data-contrast=\"auto\">playback\u00a0<\/span><span data-contrast=\"auto\">&amp;\u00a0review\u00a0<\/span><span data-contrast=\"auto\">before saving.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The\u00a0<\/span><span data-contrast=\"auto\">CameraDialog<\/span><span data-contrast=\"auto\">\u00a0is a separate component and it works in addition to the\u00a0<\/span><a href=\"https:\/\/doc.qt.io\/qt-5\/qml-qtmultimedia-camera.html\"><span data-contrast=\"none\">QML Camera<\/span><\/a><span data-contrast=\"auto\"> component. The new Camera Dialog provided in\u00a0<\/span><em>ArcGIS.AppFramework.Multimedia <\/em>gives you a solution to easily add photo and video capture to your custom app.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":625782,"id":625782,"title":"Screen Shot 2019-10-03 at 1.59.04 PM","filename":"Screen-Shot-2019-10-03-at-1.59.04-PM.png","filesize":39777,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\/screen-shot-2019-10-03-at-1-59-04-pm","alt":"","author":"7721","description":"","caption":"","name":"screen-shot-2019-10-03-at-1-59-04-pm","status":"inherit","uploaded_to":624292,"date":"2019-10-03 21:09:38","modified":"2019-10-03 21:09:38","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1332,"height":252,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM.png","medium-width":464,"medium-height":88,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM.png","medium_large-width":768,"medium_large-height":145,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM.png","large-width":1332,"large-height":252,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM.png","1536x1536-width":1332,"1536x1536-height":252,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM.png","2048x2048-width":1332,"2048x2048-height":252,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM-826x156.png","card_image-width":826,"card_image-height":156,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Screen-Shot-2019-10-03-at-1.59.04-PM.png","wide_image-width":1332,"wide_image-height":252}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"image","image":{"ID":624572,"id":624572,"title":"CameraDialog2","filename":"CameraDialog2.png","filesize":111817,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\/cameradialog2","alt":"Use CameraDialog in iOS and Android","author":"7721","description":"","caption":"Use CameraDialog in iOS and Android ","name":"cameradialog2","status":"inherit","uploaded_to":624292,"date":"2019-10-03 01:01:43","modified":"2019-10-03 21:49:49","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1579,"height":859,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2.png","medium-width":464,"medium-height":252,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2.png","medium_large-width":768,"medium_large-height":418,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2.png","large-width":1579,"large-height":859,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2.png","1536x1536-width":1536,"1536x1536-height":836,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2.png","2048x2048-width":1579,"2048x2048-height":859,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2-826x449.png","card_image-width":826,"card_image-height":449,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/CameraDialog2.png","wide_image-width":1579,"wide_image-height":859}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3><\/h3>\n<h3><strong>Ability to change languages in runtime\u00a0<\/strong><\/h3>\n<p><span data-contrast=\"auto\">An a<\/span><span data-contrast=\"auto\">pp\u00a0<\/span><span data-contrast=\"auto\">will always load<\/span><span data-contrast=\"auto\">\u00a0the appropriate translation file\u00a0<\/span><span data-contrast=\"auto\">to\u00a0<\/span><span data-contrast=\"auto\">match the default system locale. An alternative for testing is a command-line parameter <\/span><i><span data-contrast=\"auto\">&#8211;l<\/span><\/i><i><span data-contrast=\"auto\">ocale<\/span><\/i><span data-contrast=\"auto\">, which will override the system locale<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0i.e. appending\u00a0<\/span><i><span data-contrast=\"auto\">&#8212;<\/span><\/i><i><span data-contrast=\"auto\">locale\u00a0<\/span><\/i><i><span data-contrast=\"auto\">fr<\/span><\/i><span data-contrast=\"auto\">\u00a0to\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">command line will launch the app in French.<\/span><span data-ccp-props=\"{&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">With\u00a0<\/span><span data-contrast=\"auto\">AppStudio<\/span><span data-contrast=\"auto\">\u00a04.0, we have made some changes in\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">AppFramework<\/span><span data-contrast=\"auto\">\u00a0for better changing\u00a0<\/span><span data-contrast=\"auto\">of the\u00a0<\/span><span data-contrast=\"auto\">app locale.\u00a0<\/span><span data-ccp-props=\"{&quot;335559685&quot;:720}\">\u00a0<\/span><\/p>\n<ul>\n<li><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-appframework\/#defaultLocale-prop\"><span data-contrast=\"none\">AppFramework.defaultLocale<\/span><\/a><span data-contrast=\"auto\">\u00a0&#8211; read or write the current default locale (<\/span><span data-contrast=\"auto\">this\u00a0<\/span><span data-contrast=\"auto\">impacts not only text shown, but also date\/time pickers<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0thousand<\/span><span data-contrast=\"auto\">s of<\/span><span data-contrast=\"auto\">\u00a0separators<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0and decimal separators)<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><a href=\"https:\/\/doc.arcgis.com\/en\/appstudio\/api\/reference\/framework\/qml-arcgis-appframework-appframework\/#loadTranslator-method\"><span data-contrast=\"none\">AppFramework.loadTranslator<\/span><\/a><span data-contrast=\"auto\">\u00a0&#8211; change the translations for the currently loaded app. Notice that\u00a0<\/span><span data-contrast=\"auto\">AppStudio<\/span><span data-contrast=\"auto\">\u00a0Player version 4.0 is taking advantage of this new\u00a0<\/span><span data-contrast=\"auto\">method<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0and<\/span><span data-contrast=\"auto\"> has a setting to change the Player language. You can download the source code of the Player and see how our team is using this method.\u00a0<\/span><\/li>\n<\/ul>\n"},{"acf_fc_layout":"image","image":{"ID":624592,"id":624592,"title":"Player-language settings","filename":"Player-language-settings.gif","filesize":133885,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\/player-language-settings-2","alt":"AppStudio Player language setting","author":"7721","description":"","caption":"AppStudio Player language setting","name":"player-language-settings-2","status":"inherit","uploaded_to":624292,"date":"2019-10-03 01:04:19","modified":"2019-10-03 18:37:42","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":768,"height":576,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings.gif","medium-width":348,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings.gif","medium_large-width":768,"medium_large-height":576,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings.gif","large-width":768,"large-height":576,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings.gif","1536x1536-width":768,"1536x1536-height":576,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings.gif","2048x2048-width":768,"2048x2048-height":576,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings-620x465.gif","card_image-width":620,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/10\/Player-language-settings.gif","wide_image-width":768,"wide_image-height":576}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p><span class=\"TextRun BCX5 SCXW170066723\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun BCX5 SCXW170066723\"><span class=\"TextRun SCXW170066723 BCX5\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW170066723 BCX5\">We encourage you to try these new features and enhancements added to the\u00a0<\/span><\/span><span class=\"TextRun SCXW170066723 BCX5\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"SpellingError SCXW170066723 BCX5\">AppFramework.\u00a0<\/span><\/span><\/span><\/span><\/p>\n<ul>\n<li data-aria-level=\"1\" data-aria-posinset=\"1\" data-font=\"Symbol\" data-leveltext=\"\uf0b7\" data-listid=\"1\"><em><span class=\"TextRun BCX5 SCXW170066723\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun BCX5 SCXW170066723\">Please let us know your feedback and <\/span><\/span><span class=\"TextRun Highlight BCX5 SCXW170066723\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun BCX5 SCXW170066723\">suggestions by emailing\u00a0<\/span><\/span><a class=\"Hyperlink BCX5 SCXW170066723\" href=\"mailto:appstudiofeedback@esri.com\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"TextRun Highlight Underlined BCX5 SCXW170066723\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun BCX5 SCXW170066723\">appstudiofeedback@esri.com.<\/span><\/span><\/a><\/em><\/li>\n<li data-aria-level=\"1\" data-aria-posinset=\"1\" data-font=\"Symbol\" data-leveltext=\"\uf0b7\" data-listid=\"1\"><em>New to\u00a0AppStudio? Check out\u00a0<a class=\"jive-link-external-small\" href=\"https:\/\/community.esri.com\/external-link.jspa?url=https%3A%2F%2Fwww.esri.com%2Fen-us%2Farcgis%2Fproducts%2Fappstudio-for-arcgis%2Foverview\" target=\"_blank\" rel=\"nofollow noopener\">this website<\/a> to learn more about what AppStudio for ArcGIS can do to you and your organization.\u00a0<\/em><\/li>\n<li data-aria-level=\"1\" data-aria-posinset=\"2\" data-font=\"Symbol\" data-leveltext=\"\uf0b7\" data-listid=\"1\"><em>Become an\u00a0AppStudio\u00a0for ArcGIS developer! Watch\u00a0<a class=\"jive-link-external-small\" href=\"https:\/\/community.esri.com\/external-link.jspa?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6xdg58m5VU8\" target=\"_blank\" rel=\"nofollow noopener\">this video <\/a>on how to sign up for a free trial.\u00a0<\/em><\/li>\n<li data-aria-level=\"1\" data-aria-posinset=\"3\" data-font=\"Symbol\" data-leveltext=\"\uf0b7\" data-listid=\"1\"><em>Follow us on Twitter\u202f<a class=\"jive-link-external-small\" href=\"https:\/\/community.esri.com\/external-link.jspa?url=https%3A%2F%2Ftwitter.com%2FAppStudioArcGIS\" target=\"_blank\" rel=\"nofollow noopener\">@AppStudioArcGIS<\/a> to keep up-to-date on the latest information and let us know about your creations built using AppStudio to be featured in the\u202f<a class=\"jive-link-external-small\" href=\"https:\/\/community.esri.com\/external-link.jspa?url=http%3A%2F%2Fesri.github.io%2Farcgis-appstudio-samples%2F\" target=\"_blank\" rel=\"nofollow noopener\">AppStudio Showcase<\/a>.<\/em><\/li>\n<li data-aria-level=\"1\" data-aria-posinset=\"4\" data-font=\"Symbol\" data-leveltext=\"\uf0b7\" data-listid=\"1\"><em>The\u00a0AppStudio\u00a0team periodically hosts workshops and webinars; please\u00a0<a class=\"jive-link-external-small\" href=\"https:\/\/community.esri.com\/external-link.jspa?url=https%3A%2F%2Fwww.esri.com%2Fen-us%2Farcgis%2Fproducts%2Fappstudio-for-arcgis%2Fnewsletter\" target=\"_blank\" rel=\"nofollow noopener\">sign up <\/a>for the AppStudio newsletter if you are interested in information regarding AppStudio events.\u00a0<\/em><\/li>\n<\/ul>\n"}],"authors":[{"ID":7721,"user_firstname":"Tina","user_lastname":"Jin","nickname":"TJin","user_nicename":"tjin","display_name":"Tina Jin","user_email":"TJin@esri.com","user_url":"","user_registered":"2018-04-03 20:57:27","user_description":"Tina Jin is a Product Engineer on ArcGIS AppStudio team.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Screen-Shot-2018-04-19-at-5.00.17-PM.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/AppStudio-Blog-Card.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/AppStudio-Blog-Banner3.png"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What\u2019s New in AppStudio Framework Version 4.0<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What\u2019s New in AppStudio Framework Version 4.0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-22T20:24:00+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\"},\"author\":{\"name\":\"Tina Jin\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8f4d5447f3fe05721404717dd6515453\"},\"headline\":\"What\u2019s New in AppStudio Framework Version 4.0\",\"datePublished\":\"2019-10-03T22:18:25+00:00\",\"dateModified\":\"2021-02-22T20:24:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\"},\"wordCount\":7,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"Android\",\"AppFramework\",\"iOS\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\",\"name\":\"What\u2019s New in AppStudio Framework Version 4.0\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2019-10-03T22:18:25+00:00\",\"dateModified\":\"2021-02-22T20:24:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What\u2019s New in AppStudio Framework Version 4.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8f4d5447f3fe05721404717dd6515453\",\"name\":\"Tina Jin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Screen-Shot-2018-04-19-at-5.00.17-PM.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Screen-Shot-2018-04-19-at-5.00.17-PM.png\",\"caption\":\"Tina Jin\"},\"description\":\"Tina Jin is a Product Engineer on ArcGIS AppStudio team.\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/tjin\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What\u2019s New in AppStudio Framework Version 4.0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0","og_locale":"en_US","og_type":"article","og_title":"What\u2019s New in AppStudio Framework Version 4.0","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2021-02-22T20:24:00+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0"},"author":{"name":"Tina Jin","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8f4d5447f3fe05721404717dd6515453"},"headline":"What\u2019s New in AppStudio Framework Version 4.0","datePublished":"2019-10-03T22:18:25+00:00","dateModified":"2021-02-22T20:24:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0"},"wordCount":7,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["Android","AppFramework","iOS"],"articleSection":["Announcements"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0","name":"What\u2019s New in AppStudio Framework Version 4.0","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2019-10-03T22:18:25+00:00","dateModified":"2021-02-22T20:24:00+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/appstudio\/announcements\/whats-new-in-appstudio-appframework-version-4-0#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"What\u2019s New in AppStudio Framework Version 4.0"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8f4d5447f3fe05721404717dd6515453","name":"Tina Jin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Screen-Shot-2018-04-19-at-5.00.17-PM.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Screen-Shot-2018-04-19-at-5.00.17-PM.png","caption":"Tina Jin"},"description":"Tina Jin is a Product Engineer on ArcGIS AppStudio team.","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/tjin"}]}},"text_date":"October 3, 2019","author_name":"Tina Jin","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/tjin","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/AppStudio-Blog-Banner3.png","primary_product":"ArcGIS AppStudio","tag_data":[{"term_id":23441,"name":"Android","slug":"android","term_group":0,"term_taxonomy_id":23441,"taxonomy":"post_tag","description":"","parent":0,"count":85,"filter":"raw"},{"term_id":481242,"name":"AppFramework","slug":"appframework","term_group":0,"term_taxonomy_id":481242,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":24531,"name":"iOS","slug":"ios","term_group":0,"term_taxonomy_id":24531,"taxonomy":"post_tag","description":"","parent":0,"count":82,"filter":"raw"}],"category_data":[{"term_id":37101,"name":"Announcements","slug":"announcements","term_group":0,"term_taxonomy_id":37101,"taxonomy":"category","description":"","parent":0,"count":1964,"filter":"raw"}],"product_data":[{"term_id":36621,"name":"ArcGIS AppStudio","slug":"appstudio","term_group":0,"term_taxonomy_id":36621,"taxonomy":"product","description":"","parent":36591,"count":88,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=appstudio","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/624292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/7721"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=624292"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/624292\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=624292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=624292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=624292"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=624292"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=624292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}