I am facing a performance issue in the app that I am working on. Would appreciate any help or suggestion.
The issue is only noticed in iPhone 7&8 plus models. Seem to work as expected(without noticeable lag) in other iPhone models and Android.
The app has a Tab Navigator as main launching screen, the third tab, sensors, renders a section list and also does little heavy lifting, in the sense, formatting and rendering the row.
Yet I assume it is not much of work, as it seem to work fine in almost all devices except two models - iPhone7+ and iPhone8+
In those two devices alone, what I understand is the JSThread is getting too busy that the UI is frozen! The List scroll works just fine(Main thread free), but none of the touchable is responding.(until after JSThread is free - really long delay)
When the app works just fine in all other devices, why could this happen in those models alone? Have anyone faced anything similar in these models?
Attaching the behaviour while running the app in iPhone 5s and iPhone 7 plus.
While running in iPhone 5s
While running in iPhone 7plus
Thanks!!
Related
I’m having an issue with games I’ve been developing for iOS using SpriteKit
The issue deals with when the games are deployed through TestFlight and installed on iPhone devices.
On some phones the games will not display correctly. They will appear zoomed in from the center and be clipped at the edges.
Here is a screen shot (taken from an iPhone 6) of what one of the games is supposed to look like:

Here is what the game can look like when it is clipped (screen shot taken from an iPhone X):

I have three iPhone devices I’ve been using for testing:
iPhone 5 running iOS 10.3.3
iPhone 6 running iOS 11.2.1
iPhone 8 running iOS 11.2.1
On all three of these devices the game displays correctly whether I install the game through TestFlight or deploy directly from Xcode.
I also have a tester who has an iPhone 7 Plus running iOS 11, and games installed from TestFlight on his device display correctly as well.
And, of course, the games display fine in all versions of the IOS simulator I’ve used for testing and debugging,
At one point I was able to have temporary access to an iPhone 6s that was having the problem. I could not find any change I could make in SpriteKit that would allow the game to display correctly. Furthermore the View Debugging feature of Xcode indicated everything was fully visible on the screen when it was clearly clipped on the device.
Also, for another user, I was able to get the game to display correctly by having them perform a factory reset of the phone in reinstalling a backup
All of this seems to indicate the problem does not lie with the code for the games, and is rather some physical problem with the phones themselves.
It is also very confusing, and I’m unclear about the cause and how to fix it.
At any rate, this does not appear to be a problem I can solve from my end of things, and I feel that I may need to reach out to Apple for help, only I’m unsure of the best way to go about this.
I don’t know if I could try logging a bug report, as I do not have clear steps on how to reproduce the problem.
I’m wondering if there is anyone I can contact through my developer account that I have that could help to troubleshoot this issue.
What suggestions do people have for dealing with this problem?
I'm making a calculator application and having trouble figuring out what could be causing this problem. I have dynamic layouts for the storyboard and I can run my application on any iPhone version/iPad version in xcode and everything is laid out correctly. However as soon as I run it on my own iPhone 5s the buttons are completely different, they move, resize and no longer have numbers on them.
I'm confused because I have even tried to run on an iPhone 5s emulator with the same ios as my iPhone and that works perfectly.
Is there something I'm not taking into account here?
Layout with constraints in xcode
How it appears on my iPhone 5s
There are some reasonable explanations: One is that you have two many constraints in your layout that cannot all be fulfilled at the same time, and then it is quite possible that two devices will behave differently. Check in the debugger output for any relevant messages.
It is possible that you have some code that checks whether it's running on a real device or a simulator (I have some code doing that, but it is very very rare). Check all code doing that.
And it is possible that you are accessing data that is on your build machine and that isn't there when you run your code on a device.
Other than that, I'd like to know what's going on myself.
I made an iPhone app, which runs perfectly on iPhone 5 to iPhone 7 Plus. My SKSpriteNodes & Labels fit perfectly on the screen, along with the banner ads/interstitials.
But when I run on an iPad? All the buttons/labels are either off the screen or look uncentered. I've just now seen that Apple requires iPhone apps to run on iPads in iPhone mode for some reason (I don't want people with iPads to be able to run my app), and I think they might reject mine because it is extremely hard to play my game due to certain buttons being off the screen. I've tried setting the scale mode of the buttons and such but it doesn't do anything. I've also mentioned in the notes to the review team that my app is not meant to be ran on iPads.
Any ideas?
Edit:
My scene sizes were slightly off from the iPhone 4s' size (640x960). My issue is fixed now! Hope this helps someone in the future.
I have to develop an iPad app and I don't actually own an iPad, so I'm buying one now, ideally the iPad3 since it's the latest and greatest. But probably many of the potential users of the app will be using their old iPad2 for a while. And since the iPad3 is so much better than the iPad2 (double the resolution, for one thing), I'm concerned that if I test on the iPad3, I won't get any sense of what the app will be like on the iPad2.
So the question is: is it possible to do things like set the resolution to non-retina display settings and, in general, to make the iPad3 behave like the iPad2 for app testing purposes?
Except of the resolution I don't see major difference between the iPad 2 and 3.
And the simulator can cover the resolution differences . As for the processor and speed etc' unless your app is a "memory monster" I don't see a big problem.
BTW you can always use services like Test Flight to get to users with other devices and run a beta.
It is not possible to lower the resolution of your iPad 3 to that of an iPad 2 however performance wise it should work about the same or better on an iPad 2 in most cases since the extra iPad 3 horsepower is spent on the extra pixels.
Also I wouldn't worry about it too much. The iPad 3 has already sold more units than the iPad 2 in the short duration its been on the market. I think with a physical iPad 3 and the iOS simulator you should be able to reasonably ensure your app will be fine.
It would be nice if everything was the same between them, but we definitely have issues with our web application between ipad2 and ipad3. We had one work around that we had put in to get the ipad2 to work that later caused problems with the ipad3 came out. Hopefully, things are better with app development rather than web applications.
I am currently working on an iPhone app where I use 2 main timers that make the game work as one piece. The only problem I've encountered so far is that when I run it on the iOS Simulator from Xcode the game seems to lag a bit, and all of the animations run slower. I'm not sure if this is a memory issue, but isn't the iOS Simulator supposed to run just as smooth as the iPhone? When I run it on my iPod Touch 4th Generation, I don't encounter this problem. Is there a way I can fix this, or does anyone know why this happens?
The frameworks are designed to work with specific hardware on device for graphics acceleration. This is not present in the simulator, so you'll see diminished performance on graphics-intensive applications. You might however see increased performance in the simulator in non-graphics related areas. The bottom line is always test on real hardware - the simulator is just a convenience.