13 Replies
      Latest reply on Nov 7, 2019 1:46 AM by ldns_musou
      huan Level 1 Level 1 (0 points)

        I have an app that is no longer working properly after upgrading to WatchOS 6. Tested this on a Series 3 watch, but many of our customers are complaining as well.

         

        This app has multiple pages, and you can swipe left or right to see other pages. When the screen goes off, then comes back on after raising the wrist, I notice that the WillActivate() function is no longer called. But if I swipe page left or right, the WillActivate() function is correctly called.

         

        Anyone else is seeing this problem? Could it be related to the always-on screen support? Where can I find more documentation on the always-on screen support? Maybe more life cycle events have been introduced? Thanks for the help.

        • Re: WillActivate() not called on watch screen turning on
          cfc Level 1 Level 1 (20 points)

          I am seeing the same thing.  I had a few bugs that could only be explained by willActivate not being called, but I thought that would be impossible (thinking it would be too major a bug to not be spotted?).  So I checked and it is indeed not being called on the device.  It works fine on the simulator, which makes it even harder to diagnose.

           

          I tried to switch to using didAppear but that seems to not be called either.

           

          I suspect it is related to the always on screen changes, even though it also happens on older watches.  That would also explain why such a major bug was not spotted during the watchOS beta as it probably wasn't in that code.

          • Re: WillActivate() not called on watch screen turning on
            Claude31 Level 8 Level 8 (6,865 points)

            Could well be caused by always on.

            Did you try disabling 'always on', to see if it is the cause ?

             

            h ttps://www.howtogeek.com/441346/how-to-disable-the-apple-watch’s-always-on-display/

             

            You could test to implement what you need in didAppear (I hope it's called, could not test yet)

            Have you filed a bug report ?

              • Re: WillActivate() not called on watch screen turning on
                cfc Level 1 Level 1 (20 points)

                Thanks - I tried both with and without the always on display and it didn't make any difference.

                 

                I filed a bug report a month ago and got a reply saying that "didappear and willDisappear are navigation lifecycle events. They're called once when the view is first navigated to or away from".  That was it.  To be honest I wasn't sure what to make of it.  It seemed like they might have been saying that didAppear should no longer be called on wrist raise (which contradicts the documentation), and they didn't even mention willActivate, which is the main problem.

                 

                It's not such an issue now that I have worked around it by using applicationDidBecomeActive, but it seems a major bug.  However maybe it only affects some apps because it seems strange that only two of us are experiencing it.

                  • Re: WillActivate() not called on watch screen turning on
                    Claude31 Level 8 Level 8 (6,865 points)

                    Reading the initial post again

                       When the screen goes off, then comes back on after raising the wrist, I notice that the WillActivate() function is no longer called.

                     

                    I tried to understand what's happening causing WillActivate() function no longer being called.

                    There could be some logic here. The change could be due to the always on, even if disabled. I suspect watchOS doesn't call willActivate anymore, because view is already here (when always on in on, but that may now be a general behavior). That is the difference between view being activated (somehow at the top of stack) and screen on showing it (but not activating).

                    It is also logic that willActivate is called when you swipe, because the view returns to the top (hence activated).

                    • Re: WillActivate() not called on watch screen turning on
                      ldns_musou Level 1 Level 1 (0 points)

                      We also have the same problem.

                      willActivate  didappear and willDisappear are called once when the app away from foreground.  but didAppear should no  be called on wrist raise in watch OS6.