bitstadium / HockeySDK-iOS

HockeyApp was retired and the SDKs are deprecated. Please use App Center instead.
https://github.com/microsoft/appcenter-sdk-apple
Other
597 stars 268 forks source link

HockeyApp Update alert does not popup #515

Closed junalmeida closed 6 years ago

junalmeida commented 6 years ago

While debugging, I can see a breakpoint being hit at:

- (void) checkForUpdate:(CDVInvokedUrlCommand*)command
{
    CDVPluginResult* pluginResult = nil;
    if(initialized == YES) {
        [[BITHockeyManager sharedHockeyManager].updateManager checkForUpdate];
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
    }

However, I never see the alert window. I checked the sharedHockeyManager appidentifier variable and it is correct. I cannot see any message on system.log that indicates me the cause of this problem.

My development version is 0.0.1. Latest ipa for my appidentifier is 1.0.392, so I guess that it should offer the update alert.

Can you please advise?

bmourat commented 6 years ago

hi @junalmeida,

I've rechecked with your versions and the alert window showed as expected. This could be server side issue, but I would like to take a peek at the code snippet that starts HockeySDK in your app, is that possible?

Best, Murat

junalmeida commented 6 years ago

Sure @bmourat , please let me know if the following is enough for you to investigate. I use the HockeySDK-ios via cordova:

 hockeyapp.start(
        (success) => {
          hockeyapp.trackEvent(null, null, "check_for_update: " + (this.session ? this.session.email : ""));
          hockeyapp.checkForUpdate(
            (up_ok) => {
              console.log("check_for_update: " + up_ok);
            },
            (up_err) => {
              this.toastCtrl.create({
                message: "Erro: " + up_err,
                showCloseButton: false,
                cssClass: "error",
                duration: 3000
              }).present();
            });

        },
        (err) => {
          this.toastCtrl.create({
            message: "Erro: " + err,
            showCloseButton: false,
            cssClass: "error",
            duration: 3000
          }).present();

        }, appId, true, 2 /* HockeyApp.CheckForUpdateMode.CHECK_MANUALLY */, false, true);

After setting the verbose log [BITHockeyManager sharedHockeyManager].logLevel = BITLogLevelVerbose; on HockeyManager.m, I can see the following log:

2018-04-16 18:26:58.389 Samara Alpha[25104:1271208] [HockeySDK] -[BITUpdateManager finishLoading]/900 INFO: Received API response: {"versions":[],"tracker":{},"company":"Tv Globo"}
2018-04-16 18:26:58.389 Samara Alpha[25104:1271208] [HockeySDK] -[BITUpdateManager finishLoading]/920 WARNING: No versions available for download on HockeyApp.
bmourat commented 6 years ago

Hi @junalmeida

I've performed some investigation and indeed the code you provided doesn't call update functionality. The reason is that on start HockeySDK is performing multiple initializations and checks in separate threads, and when you call checkForUpdate immediately after starting SDK, some of the initializations are not finished. There are couple of ways to resolve this issue:

  1. Use HockeyApp.CheckForUpdateMode.CHECK_ON_STARTUP option (Is there any particular reason why are you checking for updates manually?)
  2. Use timer to delay call for updates say for 1 second

Hope this helps if it doesn't could you please try calling for updates in button handler and see if it is working?

Best, Murat

junalmeida commented 6 years ago

@bmourat A colleague of you stated that the real problem is that the iOS sdk cannot check for updates if these versions are restricted to a distribution group. After I set them to unrestricted, the code started to work.

I was using the manual option in a matter of try and error.

I guess that you can close this issue, but I did not find any tip on the documentation of checkForUpdates regarding the restrict option of the app versions on ios.

bmourat commented 6 years ago

Great, glad you figured out your issue!

daehn commented 5 years ago

I'm running into the same issue right now.

A colleague of you stated that the real problem is that the iOS sdk cannot check for updates if these versions are restricted to a distribution group.

Is this the case? If so I wasn't able to find this in the documentation, but maybe I missed something. If not I think it would be good to mention this somewhere, or ideally to enable this functionality for distribution groups as well.

annakocheshkova commented 5 years ago

@daehn If you want to restrict versions to specific users, you can follow the instructions on our guide Authenticating Users on iOS.