{"id":4965,"date":"2023-02-28T11:53:44","date_gmt":"2023-02-28T16:53:44","guid":{"rendered":"https:\/\/ionic.io\/blog\/?p=4965"},"modified":"2023-02-28T11:53:48","modified_gmt":"2023-02-28T16:53:48","slug":"deploying-mobile-apps-to-test-devices","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices","title":{"rendered":"Deploying Mobile Apps to Test Devices"},"content":{"rendered":"\n<p><em>Testing\u2026testing\u2026 is this app on?<\/em> One of the most critical stages of the mobile development process is deploying to test devices. This process is crucial because it allows developers to identify and fix any issues before releasing the app to the public. While <a href=\"https:\/\/ionic.io\/docs\/appflow\/deploy\/intro\">Appflow\u2019s Live Update feature<\/a> can reduce deployment risk with instant rollbacks, testing is still a must.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>When it comes to test devices, you have two options \u2014 virtual devices, such as emulators for Android or simulators for iOS, and real devices. However, the stage at which you use a type of device, as well as how you access and use these devices, can vary. Appflow, the mobile CI\/CD solution from Ionic, can make the deployment process easier for any stage and device type.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Virtual Devices<\/h2>\n\n\n\n<p>Virtual devices include emulators for Android and simulators for iOS. Both serve similar functions, but are technically a little different. Emulators have increased fidelity to real devices because they consist of both hardware and software implementations written in a low-level language. Simulators are a software-driven implementation that mimics a hardware environment. Both are easier to provision than real devices and despite their differences are typically used for the same purposes.<\/p>\n\n\n\n<p>Because of their low cost and ease of provision, virtual devices tend to be used in earlier stages of app development. You may open a virtual device right from Android Studio, XCode, or the <a href=\"https:\/\/capacitorjs.com\/docs\/basics\/workflow#testing-your-capacitor-app\">Capacitor CLI<\/a> or <a href=\"https:\/\/capacitorjs.com\/docs\/vscode\/build-and-run#testing-on-device\">VS Code plugin<\/a> during your development process to quickly validate a code change or new feature.<\/p>\n\n\n\n<p>Virtual devices are also useful in automated testing. Automated tests for mobile apps typically provide an initial review for any issues before proceeding to more thorough manual testing. Virtual devices can be used for local automated testing or in a dedicated test environment or CI pipeline.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">iOS Simulator Builds in Appflow<\/h3>\n\n\n\n<p>Appflow is excited to now offer iOS Simulator builds in the cloud! This build type is unique because it does not require a signing certificate or provisioning profile. iOS Simulator builds generate a <code>.app<\/code> file that can be opened on a simulator. Because the builds happen in Appflow, any member of the team can download the <code>.app<\/code> file for testing.<\/p>\n\n\n\n<p>To create an iOS Simulator build in Appflow, select iOS as the target platform on the build configuration screen. Then, click build! No signing certificates are needed, and unless you have custom environments or native configurations you\u2019d like to use, it\u2019s as simple as that.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-1024x588.png\" alt=\"\" class=\"wp-image-4967 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-1024x588.png\" alt=\"\" class=\"wp-image-4967\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-create-build-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Appflow build configuration for Simulator build<\/figcaption><\/figure>\n\n\n\n<p>Once the build is complete, download the bundle from the build log to open on your own simulator or share with testers. Unzip the downloaded <code>zip<\/code>, then drag the <code>.app<\/code> file onto an open simulator and the app will install so you can open and test. Simulators for multiple devices come installed with XCode.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-1024x576.png\" alt=\"\" class=\"wp-image-4968 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-1024x576.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-300x169.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-768x432.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-1536x864.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file.png 1920w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/576;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-1024x576.png\" alt=\"\" class=\"wp-image-4968\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-1024x576.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-300x169.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-768x432.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file-1536x864.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-simulator-build-open-file.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Drag the App file to an open iOS simulator to open the build<\/figcaption><\/figure>\n\n\n\n<p>iOS Simulator builds in Appflow are a great way to quickly get started with native iOS builds. You can go from connecting your project repository to running an app on a simulator in minutes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Real Devices<\/h2>\n\n\n\n<p>Real devices can be used for both manual and automated testing. While real devices can be more costly to provision and manage, they are more reliable for testing because they best represent the actual conditions your users will experience. They also allow for testing specific hardware configurations.<\/p>\n\n\n\n<p>For automated testing, some organizations use in-house real devices to run tests. There are also real device cloud services that can be used. For example, when using a real device service provider like Browserstack, a binary built in Appflow can be <a href=\"https:\/\/www.browserstack.com\/docs\/app-automate\/appium\/upload-app-from-filesystem\">uploaded directly to Browserstack using their API<\/a>.<\/p>\n\n\n\n<p>Real devices are more commonly associated with manual testing. Testers can deploy build binaries to a real device for installation, usually by connecting the device to their machine and uploading the file.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Real Device Previews in Appflow<\/h3>\n\n\n\n<p>Appflow makes it easy to install the latest build of your app to a test device with App Previews. With just a scan of a QR code, open a web or Android build of your app right on your device.<\/p>\n\n\n\n<p>Access the QR code for an Android build on the Builds list in Appflow or from the build details page. Scanning the QR code with an Android device will open the <code>.apk<\/code> file to be installed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-1024x588.png\" alt=\"\" class=\"wp-image-4969 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-1024x588.png\" alt=\"\" class=\"wp-image-4969\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.14-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Android Device Preview in Appflow<\/figcaption><\/figure>\n\n\n\n<p>For web builds, make sure you first enable web previews in your settings, and then select \u201cWeb preview\u201d on the build configuration screen. This will generate a shareable URL of your build as well as a QR code to open the build on a real device. <a href=\"https:\/\/ionic.io\/docs\/appflow\/web-previews\">Read more about Web Previews here<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-1024x588.png\" alt=\"\" class=\"wp-image-4970 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-1024x588.png\" alt=\"\" class=\"wp-image-4970\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/2.15-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Web Previews in Appflow<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Pre-release User Testing<\/h2>\n\n\n\n<p>The options outlined so far are all useful for developer and QA testing, but what about when you want to share your app with a wider audience before release? There are some options that make it easier to deploy test builds to the real devices of beta testers or other limited audiences.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Play Console Quick Sharing<\/h3>\n\n\n\n<p>Google Play Console<a href=\"http:\/\/play.google.com\/apps\/publish\/internalappsharing\"> provides a service<\/a> to quickly upload an <code>.apk<\/code> or <code>.aab<\/code> file to generate a download link to share with testers. You must have a Google Play Console account and have permission to release apps to testing tracks.&nbsp;<\/p>\n\n\n\n<p><strong>Apps uploaded to this service don\u2019t need to be signed with a production or upload key.<\/strong> This makes it useful for sharing debug type builds. The download link can optionally be restricted to specific emails as well. For more details, check out<a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/9844679\"> the Google Play Console documentation here<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Play Testing Tracks<\/h3>\n\n\n\n<p>Google Play offers three types of testing tracks to deploy your app to test devices. All apps deployed to a testing track must be a signed release type build.<\/p>\n\n\n\n<p>The <strong>internal<\/strong> testing track is used for quick deployments to up to 100 users. You can deploy devices that are not fully configured to internal testing tracks.<\/p>\n\n\n\n<p>The <strong>alpha<\/strong> testing track is also called the closed testing track. This allows for deployments to a wider list of authorized testers.<\/p>\n\n\n\n<p>The <strong>beta<\/strong> testing track is also called the closed testing track. With beta or open testing, anyone can join the testing program, and your app and store listing should be ready for Google Play Store visibility.<\/p>\n\n\n\n<p><a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/9845334\">Here is more documentation on Google Play testing tracks<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Apple Ad Hoc Releases and TestFlight<\/h3>\n\n\n\n<p>Apple Ad Hoc releases can be used to deploy apps to up to 100 test devices per year. Each test device must be manually added to the provisioning profile used when creating the credentials for the Ad Hoc build. Ad hoc releases are useful for distributing your app to internal testers and stakeholders.<\/p>\n\n\n\n<p>If you need to deploy to more test devices or are ready to share your app wider pre-release, Apple TestFlight may be a better option. With TestFlight, you can invite up to 10,000 testers using email addresses or a public link. TestFlight also provides tooling for testers to provide feedback directly from the app.<\/p>\n\n\n\n<p>Deploying to TestFlight requires an App Store build type, so your app should be configured and ready for production signing. For more information on setting up TestFlight, <a href=\"https:\/\/testflight.apple.com\/\">view the documentation here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deploying to Beta Test Devices in Appflow<\/h2>\n\n\n\n<p>With Appflow, you can easily deploy to iOS and Android testers from a cloud build of your mobile app.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Play<\/h3>\n\n\n\n<p>For Google Play Testing Tracks, once your track is set up in Google Play Console, add the destination in Appflow. From the Destinations screen, select \u201cNew destination\u201d and choose the Google Play type. Then, select the corresponding testing track type (internal, alpha, or beta) and complete the package name, publishing format, and JSON key file requirements.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-1024x588.png\" alt=\"\" class=\"wp-image-4971 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-1024x588.png\" alt=\"\" class=\"wp-image-4971\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-google-play-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Add the Google Play test track destination in Appflow<\/figcaption><\/figure>\n\n\n\n<p>Once a release build of your app is completed in Appflow, deploy to your Google Play testing track destination.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-1024x588.png\" alt=\"\" class=\"wp-image-4972 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-1024x588.png\" alt=\"\" class=\"wp-image-4972\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-deploy-google-play-beta-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Select the test track destination and deploy in Appflow<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Apple App Store<\/h3>\n\n\n\n<p>Add your Apple Developer Account credentials as a destination in Appflow under the App Store destination type.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-1024x588.png\" alt=\"\" class=\"wp-image-4973 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-1024x588.png\" alt=\"\" class=\"wp-image-4973\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-add-destination-app-store-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Add Apple App Store destination in Appflow<\/figcaption><\/figure>\n\n\n\n<p>For Ad Hoc releases, register the test device IDs before the process of generating your provisioning profile for code signing in your Apple Developer Account. Once this has been uploaded to Appflow along with your signing certificate, select the Ad Hoc build type during the build process in Appflow. Make sure you select the production signing certificate and distribution provisioning profile uploaded for the build.<\/p>\n\n\n\n<p>Once the build is complete, you can download the app binary from the build details screen to distribute to testers. Only registered devices will be able to install the app.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-1024x588.png\" alt=\"\" class=\"wp-image-4974 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-1024x588.png\" alt=\"\" class=\"wp-image-4974\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-build-log-assets-highlighted-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Download app binaries in Appflow<\/figcaption><\/figure>\n\n\n\n<p>For Apple TestFlight, you will also need to generate a production signing certificate and distribution provisioning profile, however you do not need to specify devices in the provisioning profile. Once these are uploaded, select the App Store build type in Appflow.&nbsp;<\/p>\n\n\n\n<p>You can select the App Store destination from the build screen to automatically deploy your app once the build is complete.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-1024x588.png\" alt=\"\" class=\"wp-image-4976 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-1024x588.png\" alt=\"\" class=\"wp-image-4976\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-build-app-store-destination-selected-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\">Select the App Store destination in the build screen to automatically deploy<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Automations<\/h3>\n\n\n\n<p>You can also deploy automatically to pre-configured tracks with Appflow Automations. From the Automate screen, create a new automation and specify which branch should trigger the build and deploy. For example, you may have a \u201ctesting\u201d branch for apps not ready for release.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-1024x588.png\" alt=\"\" class=\"wp-image-4978 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-2048x1176.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/588;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-1024x588.png\" alt=\"\" class=\"wp-image-4978\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-1024x588.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-300x172.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-768x441.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-1536x882.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/ss-new-automation-beta-ios-2048x1176.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><figcaption class=\"wp-element-caption\"> Create a new automation in Appflow<\/figcaption><\/figure>\n\n\n\n<p>Then, select the appropriate build type, signing certificate, and deploy destination. Now, whenever a commit is pushed to that branch, your app will automatically build and be delivered to your test destination.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Next Steps<\/h2>\n\n\n\n<p>When testing on either virtual or real devices, it\u2019s important to consider what specific devices will be used to test your app. When designing your test device matrix, factors to take into account include the popularity of devices, or any specific devices that may be more likely to cause issues with your application. <a href=\"https:\/\/www.browserstack.com\/test-on-the-right-mobile-devices\">Browserstack provides usage statistics<\/a> on devices that can be helpful for your own strategy.<\/p>\n\n\n\n<p>Regardless of what stage of testing and what type of device you use, Appflow has solutions available to build a test version of your app and deploy to devices. To learn more about Appflow, <a href=\"https:\/\/dashboard.ionicframework.com\/account-setup?loc=billing\">get started with a free trial here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Testing\u2026testing\u2026 is this app on? One of the most critical stages of the mobile development process is deploying to test devices. This process is crucial because it allows developers to identify and fix any issues before releasing the app to the public. While Appflow\u2019s Live Update feature can reduce deployment risk with instant rollbacks, testing [&hellip;]<\/p>\n","protected":false},"author":98,"featured_media":4979,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"1","publish_post_category":"20","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"560132","discourse_permalink":"http:\/\/forum.ionicframework.com\/t\/deploying-mobile-apps-to-test-devices\/231407","wpdc_publishing_response":"success","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[128,39],"class_list":["post-4965","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all","tag-appflow","tag-testing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deploying Mobile Apps to Test Devices - Ionic Blog<\/title>\n<meta name=\"description\" content=\"Deploying to test devices is easy with Appflow. Learn more about deploying mobile apps to virtual and real devices for testing.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploying Mobile Apps to Test Devices\" \/>\n<meta property=\"og:description\" content=\"Deploying to test devices is easy with Appflow. Learn more about deploying mobile apps to virtual and real devices for testing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-28T16:53:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-28T16:53:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2240\" \/>\n\t<meta property=\"og:image:height\" content=\"1120\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cecelia Martinez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ceceliacreates\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cecelia Martinez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices\"},\"author\":{\"name\":\"Cecelia Martinez\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637\"},\"headline\":\"Deploying Mobile Apps to Test Devices\",\"datePublished\":\"2023-02-28T16:53:44+00:00\",\"dateModified\":\"2023-02-28T16:53:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices\"},\"wordCount\":1722,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png\",\"keywords\":[\"Appflow\",\"testing\"],\"articleSection\":[\"All\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices\",\"url\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices\",\"name\":\"Deploying Mobile Apps to Test Devices - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png\",\"datePublished\":\"2023-02-28T16:53:44+00:00\",\"dateModified\":\"2023-02-28T16:53:48+00:00\",\"description\":\"Deploying to test devices is easy with Appflow. Learn more about deploying mobile apps to virtual and real devices for testing.\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png\",\"width\":2240,\"height\":1120},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying Mobile Apps to Test Devices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637\",\"name\":\"Cecelia Martinez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg\",\"caption\":\"Cecelia Martinez\"},\"description\":\"Developer Advocate\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/ceceliamartinez\/\",\"https:\/\/x.com\/ceceliacreates\"],\"jobTitle\":\"Developer Advocate\",\"url\":\"https:\/\/ionic.io\/blog\/author\/cecelia\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Deploying Mobile Apps to Test Devices - Ionic Blog","description":"Deploying to test devices is easy with Appflow. Learn more about deploying mobile apps to virtual and real devices for testing.","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:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices","og_locale":"en_US","og_type":"article","og_title":"Deploying Mobile Apps to Test Devices","og_description":"Deploying to test devices is easy with Appflow. Learn more about deploying mobile apps to virtual and real devices for testing.","og_url":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices","og_site_name":"Ionic Blog","article_published_time":"2023-02-28T16:53:44+00:00","article_modified_time":"2023-02-28T16:53:48+00:00","og_image":[{"width":2240,"height":1120,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png","type":"image\/png"}],"author":"Cecelia Martinez","twitter_card":"summary_large_image","twitter_creator":"@ceceliacreates","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Cecelia Martinez","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices"},"author":{"name":"Cecelia Martinez","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637"},"headline":"Deploying Mobile Apps to Test Devices","datePublished":"2023-02-28T16:53:44+00:00","dateModified":"2023-02-28T16:53:48+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices"},"wordCount":1722,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png","keywords":["Appflow","testing"],"articleSection":["All"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices","url":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices","name":"Deploying Mobile Apps to Test Devices - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png","datePublished":"2023-02-28T16:53:44+00:00","dateModified":"2023-02-28T16:53:48+00:00","description":"Deploying to test devices is easy with Appflow. Learn more about deploying mobile apps to virtual and real devices for testing.","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png","width":2240,"height":1120},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/deploying-mobile-apps-to-test-devices#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Deploying Mobile Apps to Test Devices"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/5e1062699fd542f5a6fe4c72879c1637","name":"Cecelia Martinez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2022\/09\/IMG_4815-150x150.jpeg","caption":"Cecelia Martinez"},"description":"Developer Advocate","sameAs":["https:\/\/www.linkedin.com\/in\/ceceliamartinez\/","https:\/\/x.com\/ceceliacreates"],"jobTitle":"Developer Advocate","url":"https:\/\/ionic.io\/blog\/author\/cecelia"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/deploying-apps-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/98"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=4965"}],"version-history":[{"count":2,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4965\/revisions"}],"predecessor-version":[{"id":4982,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4965\/revisions\/4982"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/4979"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=4965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=4965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=4965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}