EAS Submit updates iOS app w/o AppStore submission - expo

I just started using EAS for my managed react native app after the deprecation of the expo:build command.
Preparing my app's first update since this switch, I used EAS build to build my app, and then EAS submit to get the build onto AppStoreConnect so I could then submit the update for review to Apple. This all went as expected, and I could see the new version of my app in AppStoreConnect labeled as "Ready to Submit".
I did not submit the update for review to Apple, but the next day, all of my users reported that their apps were displaying the newest update.
AppStoreConnect confirms the build is still awaiting submission to the official AppStore, and my users do not report seeing any new update in their AppStore download history. These users are NOT affiliated with any TestFlight groups that could potentially have access to a testing version.
How is this happening??
The only commands I used during submission were:
eas build -platform ios and eas submit -platform ios
I did also at a separate point the same day use eas device:create to create a personal dev environment which DOES have a similar effect of having my installed version of the app display development changes without showing any actual update to the app—HOWEVER this was set up to only work with my device and needed 2-factor authentication to enable, so it doesn't make sense for this to somehow affect other users as well.

Related

Debugging a watchOS install from phone

I have an iOS app that I added a WatchOS to. I paired simulators, works fine. I build it for my iPhone, it runs fine. When I try to install the watch app to the watch from my phone, I get a generic error. The watch has plenty of storage. How can I see a log of why it refuses to install? image of the error
The error dialog on the watch says “This app cannot be installed because its integrity could not be verified“
Update: Could it be because another developer originally made the iOS project so it has a package name for his account? com.<hisName>... and since I am signing with my account, I would need to change the package name to com.<myName>.AppName & com.<myName>.AppName.watchkitapp?
Solved. The bundle IDs matched but they needed to be for my account since I was signing it. I added my watch to my account too (UIDD). I was able to also build straight to my watch if I desired while my phone was tethered to my laptop. When I installed a new iOS app, the watch app was automatically installed for me too.

Install attribution with expo branch.io SDK and Ad Partner link

I am trying to test branch.io install attribution from Ad Partner links within branch.io to my Android and iOS apps.
I have followed https://docs.expo.io/versions/latest/sdk/branch/ to install and configure branch in expo, but now I don't know what to do within my apps to communicate an app install back to branch.io, and I haven't been able to find any assistance elsewhere, even from branch.io.
Additionally, how can I test this functionality without deploying the apps to the app stores?
Expo is not supported currently. If you are on Expo workflow please eject your app as mentioned here. You'd also need to ensure that the Google Advertising IDs(GAID) can be captured for attribution.
For testing, you can host your APK on your website(TestFight/Firebase for iOS). Deep Linking and attribution will work regardless of the store download location.

How to deploy a different version of index.html for PWA and native Apps with Ionic 2

our PWA lives here: https://m.quemesa.com and we also have native apps with the same codebase.
However, we are not targeting the Cordova Browser platform (because it does not seem to be officially supported and I can’t see what benefit it adds) so we have to add slightly different code for our PWA compared to our native app builds. For example, In the PWA, we use the pure Google Analytics solution which requires 2 lines of javascript in the index.html.
For our native builds, we use the Cordova GA plugin, so this is not required. In the PWA we don’t need to link to Cordova.js and Vendor.js for exmaple (they get a 404 error). In the native apps we do.
Currently I am manually editing (yuck) the output folder before uploading to Azure for the PWA.
Is there some way to edit the Ionic Build Process so that I can either have 2 versions of the Index and it grabs the one it wants for the output folder depending on the build type OR it can modify the html file at build time?
The current ionic build tool alone doesn't support this.
You could just have 2 versions of index.html and a small script to swap between them and build both versions.
It's also something you could do with a "full" CI build tool. Since you mentioned Azure you could make use of Visual Studio Team Services. There are existing tasks available for npm (to install ionic, run a PWA build) and running command/PowerShell scripts. It may be easier to start off by setting up an "agent" VM with everything it needs to build your app (node, ionic, Android studio, etc) then build your build process up from there.
I use gulp-preprocessto update index.html on build depending on platform targeted. The idea of the preprocess is to generate a target index.html before the ionic serve/build with the exact declarations required for the mode selected, pwa or native. More details on this post "Using Ionic/Cordova app sources as PWA"

Ionic.io 2, Apple Application Loader, Missing Code-Signing Certificate

I'm using Ionic.io to build an Ionic 2 project and generate an .ipa (for upload to Apple's TestFlight).
When I try to upload my development .ipa file using Apple Application Uploader I get the following error:
Invalid Provisioning Profile. The provisioning profile included in the
bundle xxx.xxx.xxxx [Payload/xxx.app] is invalid. [Missing
code-signing certificate]. A Distribution Provisioning profile should
be used when submitting apps to the App Store. For more information,
visit the iOS Developer Portal."
The .ipa file is being generated by ionic.io
Ionic.io security profiles and certificates have been created as per instructions here (have tried on both Windows and Mac):
http://docs.ionic.io/services/profiles/
I've reviewed the document many times and have created keys multiple times (in case something was missed).
I'm building development with the following command. My understanding is we don't want to use "--release" because that's only for the production profile. In fact, the ionic.io package fails to build if this parameter is specified for dev.
ionic package build ios --profile dev
Push notifications are not enabled.
I posted this to the Ionic2 forum too but there has been no resolution.
Has anyone got this to work or have any ideas?
You need a mac to sign your app with a Provisioning Profile
First Build your app
ionic build ios
Then Open your app with Xcode. you can find the the project in your xcode project
ionicProject > platforms > iOS > ionicProject.xcodeproj
You need to make sure your Xcode account is setup
Click on Xcode > Preferences... > click on the plus sign
once your account is linked and you have downloed all your Provisioning profiles you can click on your project on the left
and under General you can add your Provisioning Profile below signing
This answer adds additional detail to LeRoy's answer. Because ionic.io is currently broken, the work around is to use a Mac to generate the .ipa. Note that this successfully generates a "debug" .ipa. But the steps should be similar to generate a release .ipa.
Needed a mac in a hurry so signed up for a macincloud.com account which came pre-installed with Xcode version 8.2.1.
Setup iOS security profiles as per ionic.io documentation here: http://docs.ionic.io/services/profiles/. The documentation steps are clear. I followed all steps including adding profiles to ionic.io. I was able to create using Windows and Mac. Ultimately I decided to use the Mac generated security profiles (but I don't think this mattered).
Copied my entire Ionic 2 project to the Mac.
Ran on cmd line: ionic resources
For safety, ran on cmd line: ionic platform remove ios and then ionic platform add ios.
Ran on the cmd line: ionic build ios
This generates an xCode project.
Open Xcode application. Choose open another project and select file: /platforms/ios/[project].xcodeproj
Open Xcode. In preferences > accounts added my apple account and clicked the download button.
Select Generic iOS Device
Select Generic iOS Device
In project settings > Targets > General tab: checked Automatically manage signing and selected my profile from drop down. Sometimes I had to check/uncheck this to force it to work.
Xcode complained about a signing mismatch. In project settings > Targets > Build Settings tab: change Code Signing Identity to iOS Developer. Sometimes I had to add/remove the ios platform again to get around this error.
Xcode menu Product > Archive. Followed prompts to upload to iTunes.

How to Debug Ionic WebApp?

I want to debug my ionic application in WebStorm.
I am able to run the app in browser. But how can I debug?
I tried: ionic serve --debug which doesn't seem to trigger any debugging?
How can I debug the app when it runs in browser?
With Chrome you can type chrome://inspect into your address bar
As soon as you are running your Android app, you can inspect the app when you are running it with the "ionic run android" or "ionic emulate android" command
The version of Android, however, must be higher than 4.3 I think...
According to the documentation there's a few different way's to do this. Also could you try one of these listed below since you have tried ionic serve already?
ionic run
ionic emulate
The run or emulate command will deploy the app to the specified platform devices/emulators. You can also run live reload on the specified platform device by adding the --livereload option. The live reload functionality is similar to ionic serve, but instead of developing and debugging an app using a standard browser, the compiled hybrid app itself is watching for any changes to its files and reloading the app when needed. This reduces the requirement to constantly rebuild the app for small changes.
Hope this get's you going! Let me know how it work's out for you.
I found this tool very useful, you can attach your device and get a real time inspector on your Cordova app(for iOS and Android platforms).
The browser is where I do most of my debugging for ionic. What browser are you using to do the debugging? I use Chrome and turn on DevTools. There is a source tab where you can browse your app code to find spots for breakpoints. For example, you can set a breakpoint in the code for a controller on a click event and step through the code. Then, you can use the console to execute commands to test values and inspect objects, etc. Are you unable to make this work? Or, unfamiliar w/ the DevTools? If unfamiliar, there is a resource available here. If not working, are the breakpoints not being hit?
There are a few ways to debug your ionic app.
In the browser you can catch the errors in the console.
If you are emulating your app on a simulator or a mobile device you can install the cardova plugin that displays js errors in the xcode console. So you can emulate your device and catch errors on xcode.
Here is how you add the plugin:
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-console.git
An alternative is using ionicLab. It worked for me doing the steps: Install the program and prepare all the project dependencies prior to testing. Then, click on Serve option from Testing which is under Platform menu. When the project has been executed, click on the arrow icon of the Preview bar.
As a result, Ionic will throw a Chrome window with the loaded project, so, you can use Developer Tools as it's used commonly. You ought to watch the javascript files, which you use in your project, so that you can debug them.
Simply run: ionic serve -l and inspect from browser developer options.