Appcenter-sdk-dotnet: Distribute on IOS randomly ask to reinstall the app

Created on 5 Feb 2018  ·  68Comments  ·  Source: microsoft/appcenter-sdk-dotnet

In-App Updates are very unstable on IOS. It randomly (and often) asks to reinstall the app pretending the app would have been side loaded. This is happening with 1.1 and 1.2.

In-app updates disabled

This release was either side-loaded or downloaded using a browser in private mode.

Ignore | Reinstall app

In addition, I don't really get why we have this clunky sign in popin which really gets in the way. The experience on Hockey App was much better and stable for that matter.

support

Most helpful comment

@sandorfr Great, thanks for testing that! We're going to make a small change in the next day or so that should fix the issue and remove the need to force quit Safari. No SDK update required on your side :) I'll post again once the change is deployed.

All 68 comments

Hi, we never had this report before and has proven to be very stable for other people and our own apps, we would need you to call AppCenter.LogLevel = LogLevel.Verbose before AppCenter.Start in a release test build. Once issue is a reproduced, we need you to extract the device logs having AppCenter in it so we can analyze the issue.

Hey! We haven't heard from you in a while so we'll assume your issue is fixed and go ahead and close this conversation. Should you still have questions, please don't hesitate to contact us again. Thanks!

No it’s absolutely not fixed. I just haven’t had the time to gather the
logs you asked yet.
On Wed 14 Feb 2018 at 12:04, Guillaume Perrot notifications@github.com
wrote:

Hey! We haven't heard from you in a while so we'll assume your issue is
fixed and go ahead and close this conversation. Should you still have
questions, please don't hesitate to contact us again. Thanks!


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/AppCenter-SDK-DotNet/issues/597#issuecomment-365460434,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACiXpo71dRx77-RsyWIJuLRnH3TTmvcSks5tUjEBgaJpZM4R5NHA
.

Ok, no problem, we will reopen the issue once we have logs.

Note that the problem is not reproductible on demand and so far happens
over the air.

Fetching the logs you asked require the iPhone to be connected to an Mac
with Xcode device utility running at the right moment.

Unless you have another way of getting the logs, I’m not sure I’ll manage
to get them.

Can you point to place where you do this side loading check in your sdk?
On Wed 14 Feb 2018 at 12:09, Guillaume Perrot notifications@github.com
wrote:

Ok, no problem, we will reopen the issue once we have logs.


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/AppCenter-SDK-DotNet/issues/597#issuecomment-365461489,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACiXpr1P39Bf30qDyNnrPT0AOCi5awvUks5tUjJCgaJpZM4R5NHA
.

The backend is doing sideloading check, not SDK.

It works like this:

For first install you need to click on email or visit the install portal (not appcenter.ms but install.appcenter.ms) to download the application the first time.

When clicking on the download for a specific version, portal remembers you did download that specific version from portal (it uses a cookie).

When installed, the application launches the browser with appsecret and version as part of the parameters, if the install followed the download of the very same version then in-app updates are enabled once and for all and we get a token as redirection parameter (the browser redirects to the app with either failure or success with the token).

Upon every further launch, we call the API to check latest release silently with that token.

If you did not follow the flow (download from install portal then immediately install), then browser redirects to app with a failure message that we display (in app dialog) with option to reinstall app from portal.

Every install that does not follow this process is thus considered side-loading.


For code the xamarin SDK has nothing since we coded that in our Apple SDK and are using bindings for Xamarin and React Native (and further platforms later). So the code that is used is actually objective C: https://github.com/Microsoft/AppCenter-SDK-Apple/blob/master/AppCenterDistribute/AppCenterDistribute/MSDistribute.m

OK, so the app is indeed installed using the flow which you describe (using the email link and then in app updates). So it means that for some reason the token becomes invalid in some random cases.

Then we really need the logs to see what happened as we never got such a report before and could not experience the issue ourselves.

I tried to reproduce it "on demand" and of course no luck with that. (I'll keep trying).

I post the healthy log as a reference:
log-healthy-verbose.appcenter.txt.zip

Let me give a bit of background regarding the app.
It's a B2B app. we switched recently from hockeyapp to appcenter. We use it to do the crash monitoring on all environments including the store and we are using it to distribute private 'in-house' apps to restricted groups.

The user in the restricted group are testers, developers but the most important ones are stakeholders who are not technical people. With hockeyapp they'd receive an email install the app once and then would have the update message when an update was available. No additionnal fuss.

Now with AppCenter, when they first launch the app they get a popup to turn on the notifications (will see to delay that bit) and then a message asking to sign in to turn on updates. Then when they say yes (why would they say no, and actually we don't want them to say no) they get this full screen page with a loader.

This is just confusing the user and degrading the experience. Add to that that the app lands on an actual login screen as it is a B2B app. and they get even more confused.

Don't get me wrong I love what's being done on AppCenter on many aspects, but this part is really annoying. What we would expect.

  • Capability avoid having this popup asking the user to enable Updates. we turn them on for a reason. This is completely unnecessary.
  • No full screen loader which just degrades the experience. the request can be done in the background the user does not care this technicalities.

Hi @sandorfr,

Thank you for all the information about how you use App Center.

Now with AppCenter, when they first launch the app they get a popup to turn on the notifications (will see to delay that bit) and then a message asking to sign in to turn on updates. Then when they say yes (why would they say no, and actually we don't want them to say no) they get this full screen page with a loader.

The appearance of this popup is done automatically by iOS as soon as the SDK initializes push notification functionality. There is no way to circumvent this dialog. What could be done here is delaying initialization of the push functionality. I cannot think of a way where the SDK can do this "magically" at the right moment for all apps. What would you ideal API for this look like? (given that the dialog needs to pop up eventually)

Capability avoid having this popup asking the user to enable Updates. we turn them on for a reason. This is completely unnecessary.

You mention that you used HockeyApp in the past. Do you remember how you authenticated users against HockeyApp? The reason you see the popup is that we currently have public distribution of apps or private distribution which requires a login.

If you are more comfortable sharing this in private, feel free to shoot us an email to [email protected] or get in touch via Intercom (blue button in App Center portal at the bottom right once you are logged in) and mention this thread on GH and I'll get assigned to it.

Cheers and thanks for all the feedback!
Benjamin

Hi @TroubleMakerBen,

Regarding the notification popup I'm well aware you can't do anything about it. However in the default setup where it pops up immediately it just adds to the mess. But browsing the issues here I noticed that it's as easy as splitting the Appcenter.Start intro several bits to delay that part.

I'm pretty sure there was no authentication on hockeyapp (or at least we didn't turn it on). In our case we don't see any benefit to adding a extra authentication layer. Don't get me wrong I understand that the download is always protected with a token is a security improvement. However since everything happens without any user interaction, there's no benefits to have the UI part of that interaction.

We are working on a separate application that replaces the web site to manage installed apps from AppCenter. If that app is installed, it will be used instead of the browser for the authentication part, so people having the application will have a better experience.

That’s a great news which would solve 100% of my concerns regarding this!

After second thoughts. The new scenario is?
I have app center app installed,
I’m authenticated in it.
I install one app.
I launch that new install
I’m redirected to the app center app to “enable updates”
When done I’m switched back to the original app (Facebook style I guess)

If that’s the scenario I find it even worse. I still have the exact same problem.

It's very quick and when I tested I didn't see any animation, it's as if I never left the app.

Ah in that case :)
On Thu 15 Feb 2018 at 09:16, Guillaume Perrot notifications@github.com
wrote:

It's very quick and when I tested I didn't see any animation, it's as if I
never left the app.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/AppCenter-SDK-DotNet/issues/597#issuecomment-365763059,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACiXpj8VDamIYiCZ4m9YXQVI-xzUc6Igks5tU1sggaJpZM4R5NHA
.

My comment was for Android in a specific device, iOS will have a very brief screen animation.

Mmmm.

One question why not just make this web view invisible? It seems others
have done that with success :

https://stackoverflow.com/questions/15955798/ios-app
On Thu 15 Feb 2018 at 09:27, Guillaume Perrot notifications@github.com
wrote:

My comment was for Android in a specific device, iOS will have a very
brief screen animation.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/AppCenter-SDK-DotNet/issues/597#issuecomment-365765935,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACiXpjJclxiIj2h1xAhit9zHxZlH7chEks5tU13YgaJpZM4R5NHA
.

(I love this discussion.)

So first, that SO post kinda contains the answer already. The experience is "like this by design" and I happily share the reasons for our decisions:

a) Invisible web views violate app store guidelines
SafariViewContoller must be used to visibly present information to users; the controller may not be hidden or obscured by other views or layers. Additionally, an app may not use SafariViewController to track users without their knowledge and consent.

b) SFSafariViewController behavior changed with iOS 11
In iOS 10, SFSafariViewController can open within the app and read the cookies of Safari.app without user consent. iOS 11 changes the behavior. It's still possible to access a website's cookies but iOS presents an alert first and asks for a user's consent.

c) Back and forth between App Center App and your application
I agree that this is somewhat clunky. My opinion is that we'll definitely need to think of ways to improve this. The overall way how we approach this is that we a) follow Apple's guidelines b) make sure we don't cause any rejection, ever, and c) try to strike a balance between transparency and convenience.

Overall, I agree that if you already require a login by users of your app, that they shouldn't have to enter yet another login information to get in-app-updates. What would be a valid option for you:

  • managing device UDIDs (which has limitations, e.g. you need to update a list of devices that are allowed to receive updates)
  • have an API to set username and pw/hash/whatever to authenticate without user interaction
  • ???

a) is sort of irrelevant to that case as I hardly see distribute being enabled in a production/AppStore version of the app.

b) I wasn't aware of b, it sucks. But as usual Apple rules :(

c) At a first glance

  • I might miss something there, I don't see how Apple guideline's can be relevant to beta version of apps.
  • UDID in a similar way as Ad-Hoc distribution profiles would be horrendous to manage (this is one of the reasons we use In-House distribution mode)
  • an API sounds like a way to go. probably something we could integrate with our backend to generate the in app update token based on our own rules. I'll try to come back one I wrapped my head around with what would be the perfect thing for our use cases.

Regarding the logs, I finally got lucky (sort of) @guperrot:
failing-log.txt.zip

Hi @sandorfr. Thanks for having this chat with us. It is HUGELY informative. We are well aligned with your goals I think, we want to make the install and update experience as seamless as possible for end testers. I also agree with you, we aren't there yet.

We made some tradeoff design choices (the reasoning for lots of them is seen above). I think we have missed some of the scenarios and optimal support for your scenarios. We are currently working to re-think how we are doing some of this. Your feedback is very helpful to us to make sure we get it "right" during our next iteration.

I'm leaning towards the API approach. Alot of this non-ideal experience is us trying to work around a authentication flow. If we provided an API way for you as the dev to provide the authentication (just the email of the current user) we wouldn't need all this (as hockeyapp does it). I think we should add that option back in.

@sandorfr did you use a public group url to install the app on last failure or were you logged in to install portal? Any chance you were using desktop site instead of install mobile site?

@guperrot I'm 99.9% sure I used the link from the email I received in my Outlook IOS App (with open links set to Safari). It led me to install.appcenter.ms. No sadly this is happening with the Collaborators distribution group.

If it's any help I may be able to give you access to it.

@JoshuaWeber No worries at all.

If we have to provide the email of the user it's not gonna work perfectly for us as they use test accounts which are different from their AppCenter credentials. The app is used in 6 countries today and people are switching accounts all the time to test under various parameters.

However I guess you need to that information to keep track of things like who installed the app?

Maybe we should have a call (or meet, I'll be in Seattle for the MVP summit) to talk this through.

@sandorfr Hello! Can you please try the following?

  • uninstall your app (the one trying to enable in-app updates)
  • force quit Safari
  • reopen the install link in that email and install the app
  • see if in-app updates works now

There's a known issue with strange local storage sync behavior between the main Safari app (where you install from and where we save cookies/local storage) and the UISafariViewController that pops up to enable in-app updates by reading those cookies/local storage. I want to see if we can rule that out, or if that's actually the cause of the update setup failure.

Will do (probably tomorrow in your time zone)
On Fri 16 Feb 2018 at 12:00, Jessica Yeh notifications@github.com wrote:

@sandorfr https://github.com/sandorfr Hello! Can you please try the
following?

  • uninstall your app (the one trying to enable in-app updates)
  • force quit Safari
  • reopen the install link in that email and install the app
  • see if in-app updates works now

There's a known issue with strange local storage sync behavior between the
main Safari app (where you install from and where we save cookies/local
storage) and the UISafariViewController that pops up to enable in-app
updates by reading those cookies/local storage. I want to see if we can
rule that out, or if that's actually the cause of the update setup failure.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/AppCenter-SDK-DotNet/issues/597#issuecomment-366114123,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACiXpiVDkq_J2yaWir1DTAp2T99GgIGxks5tVNMOgaJpZM4R5NHA
.

@JessicaYeh I did this and so far so good.

@sandorfr Great, thanks for testing that! We're going to make a small change in the next day or so that should fix the issue and remove the need to force quit Safari. No SDK update required on your side :) I'll post again once the change is deployed.

@sandorfr I'd for sure like to meet up during the MVP Summit (I'm speaking at it and will be around). Can you send me an email at joshweb at microsoft dot com and I'll set up a chance for us to meet and chat face to face.

@sandorfr The fix is now live! Re-installing the app should no longer fail in-app updates. (just make sure to refresh the install site and maybe need to force quit Safari one last time)

Hey!

We haven't heard from you in a while, so I am going to go ahead and close this conversation. Should you still have any questions, please don't hesitate to contact us again.

Thanks for using App Center!

Hi,

I'm afraid the issue is still happening :(. I've just faced it again :(

Hi, do you have the SDK logs?

Hi @guperrot,

I suppose you need me to re-enable the verbose logs again?

This is unfortunately the only way for us to see what could go wrong as we never reproduced the issues on our ios applications on real devices.

Hi sorry I didn't have the time to get back to you. I still see the problem happening. On of the problem to get the logs is that it currently requires to have the device connected to a mac. In other terms it requires me to be very lucky on when it happens.

Apparently there's a way to have IOS dump those logs into a file which can be retrieve afterwards. I'll give it a try (as it should affect all logs from any library). However you might consider adding an easy way to turn it on with the sdk.

Hi @sandorfr,

It's been a while since we heard from you. Any chance you were able to check with verbose logging?

I also feel like this issue contains a feature request:

"Add API in SDK to dump console logs into a file" as described in the SO link.
I'd like to add an initial thought to this: The presented solution sounds convenient at first but allowing iTunes file sharing is not a thing to do lightly.
Note: In the .plist file make sure that Application supports iTunes file sharing is exists and is set to YES so that you can access through iTunes.

Hi @TroubleMakerBen,

You are right there a feature request there :).

The problem has not magically disappeared but I haven't found the time to work on this, as some more critical subjects have priority (not that it does not matter). Sometimes you learn to live with a problem when there's bigger ones :D. I hope I'll have the next version properly instrumented so we can collect those files.

Hey @sandorfr, have you found some times to collect those verbose logs?

The problem hasn't happened recently :(.

Just in case you need this kind of logs from anyone else here is the code I've added in my AppDelegate after turning on ITunes file sharing,

 [DllImport("/usr/lib/libc.dylib")]
        extern static IntPtr freopen([MarshalAs(UnmanagedType.LPStr)] string filename, [MarshalAs(UnmanagedType.LPStr)] string mode, IntPtr stream);


        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
#if INHOUSE || DEBUG
            var paths = NSSearchPath.GetDirectories(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomain.User, true);
            var documentsDirectory = paths[0];
            var logFileName = $"{documentsDirectory}/{DateTime.Now.ToString("yyyyMMdd")}.log";

            IntPtr libC = ObjCRuntime.Dlfcn.dlopen("/usr/lib/libc.dylib", 0);
            IntPtr stdErr = ObjCRuntime.Dlfcn.GetIntPtr(libC, "__stderrp");
            freopen(logFileName, "a+", stdErr);

            AppCenter.LogLevel = LogLevel.Verbose;
#endif

I'm closing it as I believe the UX problems mentioned above are well understood. I'm closing it for now, will reopen if I reproduce the problem and the log.

Hi, thanks for getting back to us and sharing the logging code. We will reopen the issue if you have new elements for this thread and thanks for using App Center.

Hi @guperrot,

I've got this again. I sent some logs to Joshua as I had his email. Hope this will help you track it down :)

Hi, Joshua is not available, if you want to share private logs, we should continue this discussion on https://appcenter.ms using the chat button, you can upload files there.

@sandorfr thanks for the logs, as you can see above with the PR link we are pretty sure about the root cause thanks to the logs you shared. You can expect a release around mid July.

Great news, thanks :)

The bug has been fixed and released in version 1.8.0.

Cool ! Thank you! I know what to do this weekend :)
On Fri 20 Jul 2018 at 13:16, Guillaume Perrot notifications@github.com
wrote:

Closed #597 https://github.com/Microsoft/AppCenter-SDK-DotNet/issues/597
.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/AppCenter-SDK-DotNet/issues/597#event-1743932611,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACiXpjyBzMJDq6BfG8rCDnE_yET5XqIqks5uIUuEgaJpZM4R5NHA
.

This is still happening. We have about 20 users, and 4 of them report that when clicking "Continue" on the first dialogue, this was the message visible in the Safari modal:

Unfortunately, this feature couldn't be enabled. Please contact our support team.

We instructed them to reinstall, but the same happened again, along with an alert saying "This release was either side-loaded or downloaded using a browser in private mode".
The download link was shared on Slack, so they have installed the app via the Safari modal presented from there.

What might be interesting is that these 4 people are the only people out of the 20 who are actually logged into AppCenter from before. All the others had no problem with this, and they don't have a user on AppCenter (it's a "public" group).

I can't connect these phones to a debugger, so I can't get any logs.
The issue might be resolved by deleting cookies and doing all that stuff, but I can't go around telling people to delete all their cookies. If I get a hold of any of the people, I might be able to test it, but this is very much still an issue.
We really miss the old days of HockeyApp when you didn't have to authenticate this, it just worked.

Hey @sfla, sorry for a delayed response, can you please elaborate on repro steps?
The major difference you pointed out is that those 4 users are authenticated with theirs accounts in Safari, right?

@guperrot @Jamminroot I'm also hitting this issue. I created a verbose inhouse build, installed it, and grabbed our device logs. Here's a dump filtered for AppCenter:


AppCenter device logs

default 18:24:22.573729 -0500   GitHub  [AppCenter] VERBOSE: -[MSDelegateForwarder addTraceBlock:]_block_invoke_2/88 Start buffering traces.
default 18:24:22.573768 -0500   GitHub  [AppCenter] DEBUG: -[MSDelegateForwarder setEnabledFromPlistForKey:]_block_invoke/278 Delegate forwarder for info.plist key 'AppCenterAppDelegateForwarderEnabled' enabled. It may use swizzling.
default 18:24:22.573804 -0500   GitHub  [AppCenter] DEBUG: -[MSDelegateForwarder swizzleOriginalSelector:withCustomSelector:originalClass:]_block_invoke/205 Selector 'setDelegate:' of class 'UIApplication' is swizzled.
default 18:24:22.573937 -0500   GitHub  [AppCenter] DEBUG: -[MSDelegateForwarder swizzleOriginalSelector:withCustomSelector:originalClass:]_block_invoke/205 Selector 'application:openURL:options:' of class 'GitHub.AppDelegate' is swizzled.
default 18:24:22.574010 -0500   GitHub  [AppCenter] VERBOSE: +[MSDelegateForwarder flushTraceBuffer]/106 Stop buffering traces, flushed.
default 18:24:22.574361 -0500   GitHub  [AppCenter] DEBUG: -[MSSessionContext init]/42 0 session(s) in the history.
default 18:24:22.577460 -0500   GitHub  [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/66 Stored new session with id:(null) and timestamp: 2019-07-09 23:24:22 +0000.
default 18:24:22.577632 -0500   GitHub  [AppCenter] DEBUG: -[MSUserIdContext init]/54 0 userId(s) in the history.
default 18:24:22.578536 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion networkStateChanged]/356 Internet connection is up.
default 18:24:22.579471 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion networkStateChanged]/356 Internet connection is up.
default 18:24:22.579574 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion networkStateChanged]/356 Internet connection is up.
default 18:24:22.589214 -0500   GitHub  [AppCenter] INFO: -[MSDBStorage initWithSchema:version:filename:]/29 Created "Logs.sqlite" database with 4 version.
default 18:24:22.599295 -0500   GitHub  [AppCenter] DEBUG: +[MSDBStorage enableAutoVacuumInOpenedDatabase:]/227 Vacuuming database and enabling auto_vacuum
default 18:24:22.633592 -0500   GitHub  [AppCenter] WARNING: -[MSAuthTokenContext authTokenHistory]/230 Failed to retrieve history state or none was found.
default 18:24:22.633690 -0500   GitHub  [AppCenter] INFO: -[MSAppCenter configureWithAppSecret:transmissionTargetToken:fromApplication:]/281 App Center SDK configured successfully.
default 18:24:22.649609 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute init]/75 Delete update token if exists.
default 18:24:22.649933 -0500   GitHub  [AppCenter] VERBOSE: -[MSAppCenter start:withServices:fromApplication:]/296 Start services MSCrashes, MSDistribute, MSAnalytics from an application
default 18:24:22.650337 -0500   GitHub  [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/562 EnableUncaughtExceptionHandler is set to YES
default 18:24:22.650374 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/572 Enabled Mach exception handler.
default 18:24:22.650428 -0500   GitHub  [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/604 Exception handler successfully initialized.
default 18:24:22.663457 -0500   GitHub  [AppCenter] VERBOSE: -[MSSessionContext clearSessionHistoryAndKeepCurrentSession:]/88 Cleared old sessions.
default 18:24:22.664840 -0500   GitHub  [AppCenter] VERBOSE: -[MSUserIdContext clearUserIdHistory]/124 Cleared old userIds while keeping current userId.
default 18:24:22.664975 -0500   GitHub  [AppCenterCrashes] INFO: -[MSCrashes applyEnabledState:]/332 Crashes service has been enabled.
default 18:24:22.668779 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes startWithChannelGroup:appSecret:transmissionTargetToken:fromApplication:]/371 Started crash service.
default 18:24:22.672566 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute applyEnabledState:]/128 Distribute service has been enabled.
default 18:24:22.673680 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute requestInstallInformationWith:]/282 Request information of initial installation.
default 18:24:22.678240 -0500   GitHub  [AppCenterDistribute] VERBOSE: -[MSDistribute startWithChannelGroup:appSecret:transmissionTargetToken:fromApplication:]/198 Started Distribute service.
default 18:24:22.678783 -0500   GitHub  [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/66 Stored new session with id:8ACBF2DA-4C87-4B18-B071-AE4C10CDFACD and timestamp: 2019-07-09 23:24:22 +0000.
default 18:24:22.678844 -0500   GitHub  [AppCenterAnalytics] INFO: -[MSSessionTracker renewSessionId]/49 New session ID: 8ACBF2DA-4C87-4B18-B071-AE4C10CDFACD
default 18:24:22.679068 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/493 Identifying object  removed from pause lane for channel Analytics.
default 18:24:22.679116 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/495 Resume channel Analytics.
default 18:24:22.680568 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/493 Identifying object  removed from pause lane for channel Analytics/one.
default 18:24:22.680616 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/495 Resume channel Analytics/one.
default 18:24:22.684843 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/441 Storing a log to Crashes Buffer: (sid: 8ACBF2DA-4C87-4B18-B071-AE4C10CDFACD, type: startSession)
default 18:24:22.684910 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/452 Found an empty buffer position.
default 18:24:22.686094 -0500   GitHub  [AppCenterAnalytics] INFO: -[MSAnalytics applyEnabledState:]/146 Analytics service has been enabled.
default 18:24:22.686227 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:flags:]_block_invoke/182 Saving log, type: startSession, flags: 1.
default 18:24:22.686319 -0500   GitHub  [AppCenterAnalytics] VERBOSE: -[MSAnalytics startWithChannelGroup:appSecret:transmissionTargetToken:fromApplication:]/99 Started Analytics service.
default 18:24:22.687505 -0500   GitHub  [AppCenter] DEBUG: -[MSAuthTokenContext setAuthTokenHistory:]/243 Saved new history state.
default 18:24:22.688113 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/441 Storing a log to Crashes Buffer: (sid: (null), type: startService)
default 18:24:22.688468 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/464 Remembering index 0 for oldest timestamp 1562714662.680562.
default 18:24:22.688604 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/452 Found an empty buffer position.
default 18:24:22.695522 -0500   GitHub  [AppCenter] VERBOSE: -[MSLogDBStorage saveLog:withGroupId:flags:]_block_invoke/120 Log is stored with id: '1'
default 18:24:22.696121 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didCompleteEnqueueingLog:internalId:]/494 Deleting a log from buffer with id FEF92D0B-EA5D-40A6-A035-B210DC5F44C7
default 18:24:22.696231 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:flags:]_block_invoke/182 Saving log, type: startService, flags: 1.
default 18:24:22.710490 -0500   GitHub  [AppCenter] VERBOSE: -[MSLogDBStorage saveLog:withGroupId:flags:]_block_invoke/120 Log is stored with id: '2'
default 18:24:22.710804 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didCompleteEnqueueingLog:internalId:]/494 Deleting a log from buffer with id AFB818D1-C92D-4707-8C56-E3C22B27B6E5
default 18:24:22.766850 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute requestInstallInformationWith:]_block_invoke_5/291 Attempting to use tester app for update setup.
default 18:24:22.775879 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute requestInstallInformationWith:]_block_invoke_5/299 Tester app could not be opened to enable in-app updates (not installed?)
default 18:24:22.775944 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/561 Using SFAuthenticationSession to open URL: https://install.appcenter.ms/apps/a730eb33-8855-4f7d-86e9-70d692346232/update-setup?release_hash=df62ca74c1c202236b986b9e6ccf00f50604838f03d8828b5eeb64c29783489d&redirect_id=appcenter-a730eb33-8855-4f7d-86e9-70d692346232&request_id=6A615231-581E-4394-9135-72840806A522&platform=iOS&enable_failure_redirect=true
default 18:24:22.849976 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/615 Authentication Session Started, showing confirmation dialog
default 18:24:23.206607 -0500   SpringBoard Received request to activate alertItem: 
default 18:24:23.207615 -0500   SpringBoard Activation - Presenting  with presenter: 
default 18:24:25.968669 -0500   GitHub  [AppCenter] VERBOSE: -[MSLogDBStorage loadLogsWithGroupId:limit:excludedTargetKeys:afterDate:beforeDate:completionHandler:]/212 Load log(s) with id(s) '2' as batch Id:91489B0F-4C96-4363-ADB7-1E45E86A3766
default 18:24:25.971666 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault sendLogContainer:withAuthTokenFromArray:atIndex:]/219 Sending 1/1 log, group Id: AppCenter, batch Id: 91489B0F-4C96-4363-ADB7-1E45E86A3766, session Id: (null), payload:
{
  "device" : {
    "screenSize" : "1334x750",
    "appBuild" : "1",
    "osName" : "iOS",
    "timeZoneOffset" : -300,
    "carrierCountry" : "us",
    "osVersion" : "12.3.1",
    "carrierName" : "Verizon",
    "locale" : "en_US",
    "appNamespace" : "com.github.stormbreaker",
    "osBuild" : "16F203",
    "sdkName" : "appcenter.ios",
    "oemName" : "Apple",
    "model" : "iPhone9,1",
    "sdkVersion" : "2.0.1",
    "appVersion" : "1.0.0"
  },
  "timestamp" : "2019-07-09T23:24:22.686Z",
  "type" : "startService",
  "services" : [
    "Crashes",
    "Distribute",
    "Analytics"
  ]
}
default 18:24:25.973099 -0500   GitHub  [AppCenter] VERBOSE: -[MSAppCenterIngestion createRequest:eTag:authToken:]/91 URL: https://in.appcenter.ms/logs?api-version=1.0.0
default 18:24:25.973919 -0500   GitHub  [AppCenter] VERBOSE: -[MSAppCenterIngestion createRequest:eTag:authToken:]/92 Headers: Install-ID = 08C76198-1E05-493F-A882-9F2843B37A3C, App-Secret = ****************************92346232, Content-Type = application/json
default 18:24:26.336407 -0500   SpringBoard Deactivated alertItem: 
default 18:24:26.339724 -0500   SpringBoard Deactivated alertItem: 
default 18:24:26.736506 -0500   GitHub  [AppCenter] VERBOSE: -[MSHttpIngestion sendCallAsync:]_block_invoke/256 HTTP response received with status code: 401, payload:
CorrelationId: 79fbf9ad-a144-492b-b6fb-f8313d2cec1f  ReasonCode: AppSecretForbiddenListed
default 18:24:26.738135 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion pause]/163 Pause ingestion.
default 18:24:26.738305 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion call:completedWithResult:]/305 Removed call id:91489B0F-4C96-4363-ADB7-1E45E86A3766 from pending calls:{
}
default 18:24:26.766916 -0500   GitHub  [AppCenter] ERROR: -[MSChannelUnitDefault sendLogContainer:withAuthTokenFromArray:atIndex:]_block_invoke/259 Log(s) sent with failure, batch Id:91489B0F-4C96-4363-ADB7-1E45E86A3766, status code:401
default 18:24:26.767218 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute.
default 18:24:26.767301 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Distribute.
default 18:24:26.768876 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes.
default 18:24:26.769260 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Crashes.
default 18:24:26.769381 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer.
default 18:24:26.769628 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel CrashesBuffer.
default 18:24:26.769812 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics.
default 18:24:26.769939 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Analytics.
default 18:24:26.770123 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter.
default 18:24:26.770298 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel AppCenter.
default 18:24:26.770502 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute.
default 18:24:26.772125 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Distribute
default 18:24:26.773124 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Analytics' succeeded.
default 18:24:26.773177 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter.
default 18:24:26.773221 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id AppCenter
default 18:24:26.773781 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'AppCenter' succeeded.
default 18:24:26.773850 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:24:26.773891 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Distribute/one.
default 18:24:26.773946 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:24:26.774023 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Crashes/one.
default 18:24:26.774070 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:24:26.774137 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel CrashesBuffer/one.
default 18:24:26.774183 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.
default 18:24:26.774293 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Analytics/one.
default 18:24:26.774352 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:24:26.774408 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel AppCenter/one.
default 18:24:26.774451 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:24:26.774509 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:24:26.774560 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Distribute/one
default 18:24:26.774784 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Distribute/one' succeeded.
default 18:24:26.774839 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:24:26.775026 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:24:26.775086 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Crashes/one
default 18:24:26.775141 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Crashes/one' succeeded.
default 18:24:26.775276 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:24:26.775338 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:24:26.775376 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id CrashesBuffer/one
default 18:24:26.775445 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'CrashesBuffer/one' succeeded.
default 18:24:26.775506 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.
default 18:24:26.775591 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.
default 18:24:26.775658 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Analytics/one
default 18:24:26.775729 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Analytics/one' succeeded.
default 18:24:26.775782 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:24:26.775883 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:24:26.775949 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id AppCenter/one
default 18:24:26.776009 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'AppCenter/one' succeeded.
default 18:24:28.296078 -0500   SafariViewService   Application com.github.stormbreaker is able to handle scheme appcenter-a730eb33-8855-4f7d-86e9-70d692346232 for authentication
default 18:24:28.296191 -0500   GitHub  [AppCenterDistribute] ERROR: -[MSDistribute openURL:]/1085 Cannot find either update token or distribution group id.
default 18:24:28.296264 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURL:]/1101 In-app updates setup failure detected.
default 18:24:31.528600 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/561 Using SFAuthenticationSession to open URL: https://install.appcenter.ms?update_setup_failed=true
default 18:24:31.530664 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/615 Authentication Session Started, showing confirmation dialog
default 18:24:31.701155 -0500   SpringBoard Received request to activate alertItem: 
default 18:24:31.701298 -0500   SpringBoard Activation - Presenting  with presenter: 
default 18:24:33.102255 -0500   SpringBoard Deactivated alertItem: 
default 18:24:33.103691 -0500   SpringBoard Deactivated alertItem: 
default 18:25:33.989714 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter.
default 18:25:33.989745 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:25:33.989776 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:25:33.989810 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes.
default 18:25:33.989840 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:25:33.989874 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:25:33.989914 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer.
default 18:25:33.989962 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:25:33.990009 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute.
default 18:25:33.990039 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:25:33.990062 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics.
default 18:25:33.990102 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.
default 18:25:33.990132 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:25:33.990163 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:25:33.990198 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.

I tried @JessicaYeh's suggestions above (uninstall, force-quit Safari, reinstall from email) and it doesn't change anything.

I then tried clearing Safari.app cookies, uninstall+reinstall from email, and now when I open our app I get a web view asking me to sign into Visual Studio App Center instead of just enabling in-app updates. After signing in w/ the same account I use for App Center, it then shows the same error "In-app updates disabled".

I just sent an internal build out and unfortunately am getting this error. Trying to debug before more people install and end up having to email everyone to manually update.

I feel like I've tried everything and am pretty stuck. I'd love some direction!

@rnystrom Can you please share implementation steps? We have double-checked that just yet, and could not reproduce the problem.
What we did:
1) Created blank app
2) Integrated AppCenter and AppCenter.Distribute to our app
3) Built .IPA artifact (Ad-Hoc)
4) Uploaded it to appcenter portal
5) Distributed it to public distribution group
6) Signed in to appcenter in Safari with the appcenter user we are testing on
7) Used the public link from step 5 to download and install app
8) Built different version of .IPA (Ad-Hoc)
9) Uploaded it to portal
10) Distributed it as mandatory update

Nowhere in those steps did we get the errors mentioned above. Can you maybe correct the list above, if it contains mistakes or incomplete?

What iOS distribution channel did you select for your build: Ad-Hoc, AppStore or Enterprise?

  1. Signed in to appcenter in Safari with the appcenter user we are testing on

@Jamminroot is this step required? If we share a public-link, can't folks just tap & install?

  • We are using AC to build the inhouse app from master, then distributing that artifact.
  • I'm also not making updates mandatory.

Lastly I did get this working a few weeks ago. I managed to distribute, get the "sign in with AC" prompt which opened+closed Safari, and after distributing an in-app update got a prompt the next time I launched.

What iOS distribution channel did you select for your build: Ad-Hoc, AppStore or Enterprise?

We're distributing via enterprise atm. We can install & use the app just fine, its only the in-app update that is the problem right now.

Public group does not require to be signed in but it actually does require to open the link from Safari public link though so that the cookie is set (and clicking installing from that public link and from no other place).

If when the web view is open and it asks for sign-in, that usually means the cookie from clicking and installing from the exact public link was not done (or cookie erased in between installing and launching).

@guperrot even if I paste the link into Safari.app and install after deleting the app, I still get the alert that in-app updates are disabled.


Logs when installing from Safari.app

default 18:15:17.862526 -0500   GitHub  [AppCenter] VERBOSE: -[MSDelegateForwarder addTraceBlock:]_block_invoke_2/88 Start buffering traces.
default 18:15:17.864373 -0500   GitHub  [AppCenter] DEBUG: -[MSDelegateForwarder setEnabledFromPlistForKey:]_block_invoke/278 Delegate forwarder for info.plist key 'AppCenterAppDelegateForwarderEnabled' enabled. It may use swizzling.
default 18:15:17.864412 -0500   GitHub  [AppCenter] DEBUG: -[MSDelegateForwarder swizzleOriginalSelector:withCustomSelector:originalClass:]_block_invoke/205 Selector 'setDelegate:' of class 'UIApplication' is swizzled.
default 18:15:17.864459 -0500   GitHub  [AppCenter] DEBUG: -[MSDelegateForwarder swizzleOriginalSelector:withCustomSelector:originalClass:]_block_invoke/205 Selector 'application:openURL:options:' of class 'GitHub.AppDelegate' is swizzled.
default 18:15:17.864504 -0500   GitHub  [AppCenter] VERBOSE: +[MSDelegateForwarder flushTraceBuffer]/106 Stop buffering traces, flushed.
default 18:15:17.864586 -0500   GitHub  [AppCenter] DEBUG: -[MSSessionContext init]/42 0 session(s) in the history.
default 18:15:17.864869 -0500   GitHub  [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/66 Stored new session with id:(null) and timestamp: 2019-07-10 23:15:17 +0000.
default 18:15:17.864930 -0500   GitHub  [AppCenter] DEBUG: -[MSUserIdContext init]/54 0 userId(s) in the history.
default 18:15:17.871782 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion networkStateChanged]/356 Internet connection is up.
default 18:15:17.872019 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion networkStateChanged]/356 Internet connection is up.
default 18:15:17.872707 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion networkStateChanged]/356 Internet connection is up.
default 18:15:17.882259 -0500   GitHub  [AppCenter] INFO: -[MSDBStorage initWithSchema:version:filename:]/29 Created "Logs.sqlite" database with 4 version.
default 18:15:17.893095 -0500   GitHub  [AppCenter] DEBUG: +[MSDBStorage enableAutoVacuumInOpenedDatabase:]/227 Vacuuming database and enabling auto_vacuum
default 18:15:17.934590 -0500   GitHub  [AppCenter] INFO: -[MSAppCenter configureWithAppSecret:transmissionTargetToken:fromApplication:]/281 App Center SDK configured successfully.
default 18:15:17.934649 -0500   GitHub  [AppCenter] WARNING: -[MSAuthTokenContext authTokenHistory]/230 Failed to retrieve history state or none was found.
default 18:15:17.936559 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute init]/75 Delete update token if exists.
default 18:15:17.936728 -0500   GitHub  [AppCenter] VERBOSE: -[MSAppCenter start:withServices:fromApplication:]/296 Start services MSCrashes, MSDistribute, MSAnalytics from an application
default 18:15:17.946217 -0500   GitHub  [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/562 EnableUncaughtExceptionHandler is set to YES
default 18:15:17.946250 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/572 Enabled Mach exception handler.
default 18:15:17.946275 -0500   GitHub  [AppCenterCrashes] DEBUG: -[MSCrashes configureCrashReporterWithUncaughtExceptionHandlerEnabled:]/604 Exception handler successfully initialized.
default 18:15:17.953278 -0500   GitHub  [AppCenter] VERBOSE: -[MSSessionContext clearSessionHistoryAndKeepCurrentSession:]/88 Cleared old sessions.
default 18:15:17.953367 -0500   GitHub  [AppCenter] VERBOSE: -[MSUserIdContext clearUserIdHistory]/124 Cleared old userIds while keeping current userId.
default 18:15:17.953424 -0500   GitHub  [AppCenterCrashes] INFO: -[MSCrashes applyEnabledState:]/332 Crashes service has been enabled.
default 18:15:17.955828 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes startWithChannelGroup:appSecret:transmissionTargetToken:fromApplication:]/371 Started crash service.
default 18:15:17.958598 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute applyEnabledState:]/128 Distribute service has been enabled.
default 18:15:17.964451 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute requestInstallInformationWith:]/282 Request information of initial installation.
default 18:15:17.964942 -0500   GitHub  [AppCenterDistribute] VERBOSE: -[MSDistribute startWithChannelGroup:appSecret:transmissionTargetToken:fromApplication:]/198 Started Distribute service.
default 18:15:17.965617 -0500   GitHub  [AppCenter] VERBOSE: -[MSSessionContext setSessionId:]/66 Stored new session with id:56FF8E35-D0FC-4DF4-933C-B67F5B601563 and timestamp: 2019-07-10 23:15:17 +0000.
default 18:15:17.965676 -0500   GitHub  [AppCenterAnalytics] INFO: -[MSSessionTracker renewSessionId]/49 New session ID: 56FF8E35-D0FC-4DF4-933C-B67F5B601563
default 18:15:17.966720 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/493 Identifying object  removed from pause lane for channel Analytics.
default 18:15:17.966931 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/495 Resume channel Analytics.
default 18:15:17.967220 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/493 Identifying object  removed from pause lane for channel Analytics/one.
default 18:15:17.968311 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault resumeWithIdentifyingObjectSync:]/495 Resume channel Analytics/one.
default 18:15:17.969460 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/441 Storing a log to Crashes Buffer: (sid: 56FF8E35-D0FC-4DF4-933C-B67F5B601563, type: startSession)
default 18:15:17.970155 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/452 Found an empty buffer position.
default 18:15:17.970206 -0500   GitHub  [AppCenterAnalytics] INFO: -[MSAnalytics applyEnabledState:]/146 Analytics service has been enabled.
default 18:15:17.970267 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:flags:]_block_invoke/182 Saving log, type: startSession, flags: 1.
default 18:15:17.970323 -0500   GitHub  [AppCenterAnalytics] VERBOSE: -[MSAnalytics startWithChannelGroup:appSecret:transmissionTargetToken:fromApplication:]/99 Started Analytics service.
default 18:15:17.971033 -0500   GitHub  [AppCenter] DEBUG: -[MSAuthTokenContext setAuthTokenHistory:]/243 Saved new history state.
default 18:15:17.971432 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/441 Storing a log to Crashes Buffer: (sid: (null), type: startService)
default 18:15:17.971522 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/464 Remembering index 0 for oldest timestamp 1562800517.965401.
default 18:15:17.971616 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didPrepareLog:internalId:flags:]/452 Found an empty buffer position.
default 18:15:17.979134 -0500   GitHub  [AppCenter] VERBOSE: -[MSLogDBStorage saveLog:withGroupId:flags:]_block_invoke/120 Log is stored with id: '1'
default 18:15:17.979317 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didCompleteEnqueueingLog:internalId:]/494 Deleting a log from buffer with id 3D48AF21-12C2-443B-87F6-D0F53782D9AC
default 18:15:17.981239 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault enqueueItem:flags:]_block_invoke/182 Saving log, type: startService, flags: 1.
default 18:15:17.997507 -0500   GitHub  [AppCenter] VERBOSE: -[MSLogDBStorage saveLog:withGroupId:flags:]_block_invoke/120 Log is stored with id: '2'
default 18:15:17.997618 -0500   GitHub  [AppCenterCrashes] VERBOSE: -[MSCrashes channel:didCompleteEnqueueingLog:internalId:]/494 Deleting a log from buffer with id D3904D1B-D796-4C69-A466-F5892CB58FC5
default 18:15:18.061737 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute requestInstallInformationWith:]_block_invoke_5/291 Attempting to use tester app for update setup.
default 18:15:18.065406 -0500   GitHub  [AppCenterDistribute] INFO: -[MSDistribute requestInstallInformationWith:]_block_invoke_5/299 Tester app could not be opened to enable in-app updates (not installed?)
default 18:15:18.065467 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/561 Using SFAuthenticationSession to open URL: https://install.appcenter.ms/apps/***/update-setup?release_hash=df62ca74c1c202236b986b9e6ccf00f50604838f03d8828b5eeb64c29783489d&redirect_id=appcenter-***&request_id=06DC1B34-E62E-421E-899F-CCC3F66BD3FD&platform=iOS&enable_failure_redirect=true
default 18:15:18.295538 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/615 Authentication Session Started, showing confirmation dialog
default 18:15:19.622297 -0500   SpringBoard Deactivated alertItem: 
default 18:15:19.625202 -0500   SpringBoard Deactivated alertItem: 
default 18:15:20.996453 -0500   GitHub  [AppCenter] VERBOSE: -[MSLogDBStorage loadLogsWithGroupId:limit:excludedTargetKeys:afterDate:beforeDate:completionHandler:]/212 Load log(s) with id(s) '2' as batch Id:F177C00E-A76D-44AB-A130-08857834FE37
default 18:15:20.998321 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault sendLogContainer:withAuthTokenFromArray:atIndex:]/219 Sending 1/1 log, group Id: AppCenter, batch Id: F177C00E-A76D-44AB-A130-08857834FE37, session Id: (null), payload:
{
  "device" : {
    "screenSize" : "1334x750",
    "appBuild" : "1",
    "osName" : "iOS",
    "timeZoneOffset" : -300,
    "carrierCountry" : "us",
    "osVersion" : "12.3.1",
    "carrierName" : "Verizon",
    "locale" : "en_US",
    "appNamespace" : "com.github.stormbreaker",
    "osBuild" : "16F203",
    "sdkName" : "appcenter.ios",
    "oemName" : "Apple",
    "model" : "iPhone9,1",
    "sdkVersion" : "2.0.1",
    "appVersion" : "1.0.0"
  },
  "timestamp" : "2019-07-10T23:15:17.971Z",
  "type" : "startService",
  "services" : [
    "Crashes",
    "Distribute",
    "Analytics"
  ]
}
default 18:15:20.998489 -0500   GitHub  [AppCenter] VERBOSE: -[MSAppCenterIngestion createRequest:eTag:authToken:]/91 URL: https://in.appcenter.ms/logs?api-version=1.0.0
default 18:15:20.998571 -0500   GitHub  [AppCenter] VERBOSE: -[MSAppCenterIngestion createRequest:eTag:authToken:]/92 Headers: Install-ID = D69AAF76-A701-462F-9B07-B4F4CB1C3AB5, App-Secret = ****************************92346232, Content-Type = application/json
default 18:15:21.532677 -0500   GitHub  [AppCenterDistribute] ERROR: -[MSDistribute openURL:]/1085 Cannot find either update token or distribution group id.
default 18:15:21.532729 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURL:]/1101 In-app updates setup failure detected.
default 18:15:21.532839 -0500   SafariViewService   Application com.github.stormbreaker is able to handle scheme appcenter-a730eb33-8855-4f7d-86e9-70d692346232 for authentication
default 18:15:21.598996 -0500   GitHub  [AppCenter] VERBOSE: -[MSHttpIngestion sendCallAsync:]_block_invoke/256 HTTP response received with status code: 401, payload:
CorrelationId: 381b16a6-54bd-4d30-b2b3-5b328bc40927  ReasonCode: AppSecretForbiddenListed
default 18:15:21.599147 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion pause]/163 Pause ingestion.
default 18:15:21.599214 -0500   GitHub  [AppCenter] ERROR: -[MSChannelUnitDefault sendLogContainer:withAuthTokenFromArray:atIndex:]_block_invoke/259 Log(s) sent with failure, batch Id:F177C00E-A76D-44AB-A130-08857834FE37, status code:401
default 18:15:21.599277 -0500   GitHub  [AppCenter] INFO: -[MSHttpIngestion call:completedWithResult:]/305 Removed call id:F177C00E-A76D-44AB-A130-08857834FE37 from pending calls:{
}
default 18:15:21.599330 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer.
default 18:15:21.599409 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel CrashesBuffer.
default 18:15:21.599470 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics.
default 18:15:21.599537 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Analytics.
default 18:15:21.599651 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute.
default 18:15:21.599812 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Distribute.
default 18:15:21.599872 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter.
default 18:15:21.600042 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel AppCenter.
default 18:15:21.600099 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes.
default 18:15:21.600264 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Crashes.
default 18:15:21.600371 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer.
default 18:15:21.600472 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id CrashesBuffer
default 18:15:21.602860 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'CrashesBuffer' succeeded.
default 18:15:21.603109 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics.
default 18:15:21.603165 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Analytics
default 18:15:21.616992 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Analytics' succeeded.
default 18:15:21.617166 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute.
default 18:15:21.617210 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Distribute
default 18:15:21.617256 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Distribute' succeeded.
default 18:15:21.617314 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter.
default 18:15:21.617354 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id AppCenter
default 18:15:21.617621 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'AppCenter' succeeded.
default 18:15:21.617676 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes.
default 18:15:21.617712 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Crashes
default 18:15:21.617751 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Crashes' succeeded.
default 18:15:21.617800 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:15:21.617862 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel CrashesBuffer/one.
default 18:15:21.617924 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.
default 18:15:21.617987 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Analytics/one.
default 18:15:21.618427 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:15:21.618553 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Distribute/one.
default 18:15:21.619133 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:15:21.619193 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel AppCenter/one.
default 18:15:21.619251 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:15:21.619311 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/480 Pause channel Crashes/one.
default 18:15:21.620616 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:15:21.620746 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel CrashesBuffer/one.
default 18:15:21.620891 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id CrashesBuffer/one
default 18:15:21.620946 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'CrashesBuffer/one' succeeded.
default 18:15:21.621356 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.
default 18:15:21.646699 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Analytics/one.
default 18:15:21.646874 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Analytics/one
default 18:15:21.646934 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Analytics/one' succeeded.
default 18:15:21.646971 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:15:21.647025 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Distribute/one.
default 18:15:21.647060 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Distribute/one
default 18:15:21.647113 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Distribute/one' succeeded.
default 18:15:21.668043 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:15:21.668212 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel AppCenter/one.
default 18:15:21.668285 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id AppCenter/one
default 18:15:21.668672 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'AppCenter/one' succeeded.
default 18:15:21.668736 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:15:21.668989 -0500   GitHub  [AppCenter] VERBOSE: -[MSChannelUnitDefault pauseWithIdentifyingObjectSync:]/478 Identifying object  added to pause lane for channel Crashes/one.
default 18:15:21.669073 -0500   GitHub  [AppCenter] DEBUG: -[MSChannelUnitDefault setEnabled:andDeleteDataOnDisabled:]_block_invoke/436 Delete all logs for group Id Crashes/one
default 18:15:21.669127 -0500   GitHub  [AppCenter] VERBOSE: +[MSLogDBStorage deleteLogsFromDBWithColumnValues:columnName:inOpenedDatabase:]/353 Deletion of log(s) by groupId with value(s) 'Crashes/one' succeeded.
default 18:15:24.378116 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/561 Using SFAuthenticationSession to open URL: https://install.appcenter.ms?update_setup_failed=true
default 18:15:24.378226 -0500   GitHub  [AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/615 Authentication Session Started, showing confirmation dialog
default 18:15:24.472733 -0500   SpringBoard Received request to activate alertItem: 
default 18:15:24.473578 -0500   SpringBoard Activation - Presenting  with presenter: 

Any suggestions on things I can do/try? We're considering moving off of App Center b/c of this 😞

So when debug logging is enabled, (AppCenter.LogLevel = LogLevel.Debug) before AppCenter.Start, and using the mac Console application, this debug log can be retrieved for troubleshooting (this one is an example from another app):

[AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/560 Using SFAuthenticationSession to open URL: https://install.appcenter.ms/apps/fe2bf05d-f4f9-48a6-83d9-ea8033fbb644/update-setup?release_hash=e7fc4f0b5f218b0c58eb056466c6a1f3c9b11792e7212d5fa27d701a78b7f5fd&redirect_id=appcenter-fe2bf05d-f4f9-48a6-83d9-ea8033fbb644&request_id=9FF0D700-5892-4481-82AB-0202AD2BBDEE&platform=iOS&enable_failure_redirect=true

If you can share a public distribution link so we can have a look as well (but would need to upload a build that has verbose or debug logging enabled in that test group so we can look at SDK logs).

@guperrot happy to share a link, but would you mind emailing me at rnystrom at github.com?

Also the above pasted logs are w/ verbose logging enabled (just fixed up the formatting).

By above logs, I am not sure which logs you are referring to, I don't see attached logs in github comments.

If you want to share confidential information, you can use our support system (Intercom) from any page from the https://appcenter.ms portal (blue chat button), it supports attachments. You can also share the public distribution link there. You can link this issue in the ticket so it gets routed to us faster.

@guperrot if you click the triangle next to "Logs when installing from Safari.app" in this comment, it'll expand to show our logs.

Just sent the link + ref to this issue via Intercom. Thanks!

Thanks for the logs, I didn't notice that.

@Jamminroot will investigate from here.

The key takeaways from logs:

[AppCenterDistribute] DEBUG: -[MSDistribute openURLInAuthenticationSessionWith:fromClass:]/561 Using SFAuthenticationSession to open URL: https://install.appcenter.ms/apps/***/update-setup?release_hash=df62ca74c1c202236b986b9e6ccf00f50604838f03d8828b5eeb64c29783489d&redirect_id=appcenter-a730eb33-8855-4f7d-86e9-70d692346232&request_id=06DC1B34-E62E-421E-899F-CCC3F66BD3FD&platform=iOS&enable_failure_redirect=true

And from device properties:

"appBuild" : "1"
"appVersion" : "1.0.0"

Which is suspicious version name and code.
Maybe it's related to the failed setup as those 2 values are part of release_hash, and release_hash needs to match one release from the group (there is also a build uuid part of the hash though).

So I missed this log:

[AppCenter] VERBOSE: -[MSHttpIngestion sendCallAsync:]_block_invoke/256 HTTP response received with status code: 401, payload:
CorrelationId: 381b16a6-54bd-4d30-b2b3-5b328bc40927  ReasonCode: AppSecretForbiddenListed

Our team is looking what happened to that application (normally when we get this when an application has been deleted).

We _did_ move the app to another repo and deleted + created a new app on App Center. I'm guessing that has something to do w/ it. Is there a step we might have missed?

Yes, the appsecret must be updated in AppCenter.start line and in Info.plist also for the url scheme.

So this had nothing to do with the original issue?

@sandorfr yeah, the problem @rnystrom faced had a different origin, not related to the issue you opened a while ago (and which was fixed in 1.8.0).
Also, I'd like to know how you are doing, @sfla - are you still experiencing the problem?

Closing this old one. If you are the author of the issue and still experiencing issue, please reopen. If you are not the original author, please create a new issue.

Was this page helpful?
0 / 5 - 0 ratings