How to have no Xamarin.ios spash and no display - ios

This Xamarin.ios app on iPhone must have no splash and no display whatsoever and must leave previous app displayed.
Is is launched by an Objective-C app and it only runs for a short time and then ends itself, leaving screen of the ObjC app always displayed
I need the app that launched it to remain in focus.
USAGE STEPS...
I open the ObjC app, which has command buttons
I press button that starts my Xamarin.ios app which should have no display at all
ObjC app button menu remains displayed
Xamarin.ios app runs and then ends itself
ObjC app button menu remains
Please help -- am under the "time gun" .

This is not possible on iOS - if it makes it easier for you you could have whole the time in this world (and not being under the "time gun") and could not solve it unless Apple changes something in future iOS releases which is unlikely.
The closest you could get to it is to record the screenshot of ObjC app before it launches Xamarin.iOS app, send it some way to Xamarin app (the best way would be if they could be the same App Group), put empty splash screen and ensure that it displays just a split of the second and then display your screenshot in the Xamarin app and do whatever you want to do.

Related

libGDX iOS home button kills the game

I'm developing a libGDX game for Android and iOS (MobiDevelop's RoboVM fork). Android works perfectly, but I have a issue on iOS. When the iPhone home button is pressed to leave the game, and I launch the game again by tapping on icon, the game does not resume from where it was paused, but instead restarts, which means the loading screen is displayed, all assets are reloaded, and the main menu appears. Like a fresh/new start of the app. I do not have any specific configuration for the iOS module in my libgdx project and am using what was pregenerated.
Is it possible to tell iOS that I do not want to kill the process? I want to switch to pause/sleeping mode only.
I found a reason of this problem. I tested it on the real device, therefore I was unable to see a logs. When I switch to simulator and look at the logs, I found a NullPointerException. This was a cause of application crash. When I fix this bug, everything works as I expected. After iPhone home button is pressed, pause() method of com.badlogic.gdx.Screen is called and after rerun the game, it continues from exactly where it stops / pauses.
I learned a lesson: make a tests on simulator at first :-)
While I am entirely unfamiliar with libGDX, I can tell you that except for a few very specific cases (VOIP etc.), you cannot control what iOS does with your app when the home button gets pressed.
Furthermore, it is the responsibility of the developer to save the app's state when the app leaves the foreground since this is not something that is or can be handled automatically in a performant way.

In iOS 11.2, opening forcefully closed apps, sometimes shows the previously visible view and redirect to the launch screen

In iOS 11.2 application I have noticed an unusual behaviour (opening forcefully closed apps, sometimes shows the previously visible view and redirect to the launch screen), I don't know whether it is bug with OS or something else but it can sometime appear in Google app also.
You can find the related video in below link.
https://s3.amazonaws.com/uploads.hipchat.com/37040/3355524/7K3EL8N5X55tN8p/ScreenRecording_12-13-2017%2013%3A23.MP4.
Please help me to figure it out whether it is a feature or bug.
In my opinion, it's rather a bug or just normal behaviour, not a feature. There is some time before the app is dropped from the RAM, used to save some data, e.g. in appWillTerminate, etc., but it should not make an effect like you have observed. From the second hand, maybe device holds the image of how app looks like before the rage quit and shows it up, then freshly opens the app.

What is the proper UX for user to exit an iPhone app?

Is the iPhone "device Home button" (circle button that is part of the hardware at bottom center) the standard way that users exit an iPhone app?
I don't have an actual iPhone device yet (looking for the iPhone6 to come down in price a bit), am just working with Xcode simulators. When I run my iPhone Swift apps, they are always in full screen mode.
On Android, there are a few navigation buttons built into the OS that appear at the bottom of the screen - Back, Home, Open Apps. And in that OS you can give a directive to exit full screen to reveal those OS buttons.. which then allows the user to easily exit the app if they'd like to.
In looking at the iPhone apps on the simulator, I notice they don't have this kind of UX.
What are the best practices around iPhone users
A. Sending an app to the background ?
B. Quitting/Closing an app ?
To send an app to the background, hitting the home button is sufficient.
To quit an app, tapping the home button twice shows you all the open apps; you can then swipe an app to "kill" (terminate) it.
However, here is a recent post by the excellent John Gruber explaining why killing an app should only be a last resort: https://daringfireball.net/2017/07/you_should_not_force_quit_apps
Note: on the iPhone Simulator, the command-shift-H key combo is equivalent to hitting the home button.
To send an app to the background:
Press the Home button.
To "quit" or "close" an app:
Press the Home button.
That's all the UX expected of an iOS app... and none if it is actually provided by your app. iOS manages it for you; you just have to deal with your app's lifecycle methods to respond to the user leaving and re-entering your app.
iOS doesn't expect users to know or care about the difference between "background" and "closed/quit" in most cases. You enter an app, you leave an app, that's it.
And the way iOS works under the hood, there is no difference in most cases — when you leave an app, it's not "running in the background", it's "frozen" or "suspended": that is, in memory but not running. That way the OS can get it usable again near-instantly if the user comes back, or instantly reclaim that memory if another process needs it.
The user can also invoke the multitasking UI (double click home button, or in iOS 11 on iPad swipe up from bottom edge) and swipe an app away, but this is equivalent to the "kill" or "force quit" actions seen in other operating systems — it's primarily for situations where an app is misbehaving. This isn't part of your app's UX either; it's also provided by iOS.
As noted in the Daring Fireball post linked from #TimKokesh's answer, there are some circumstances where an app "in the background" isn't "frozen" but has some limited ability to run, the Settings app has UI to help the user keep tabs on what are using (and abusing) that ability, and those are some of the only cases where it's reasonable for a user to "force quit" apps.
If you want to have a real iPhone look-alike simulator on your development environment, yes it's available with New Xcode-9/Beta version. It shows real hardware buttons(volume, lock, home buttons) which you can press and feel like a real device. If you are interested you can download it from here
On other Xcode environments, you can go to home screen by pressing the keys: Cmd + Shift + H

iOS: How to prevent the splash screen from showing when the app goes into background to make a call?

The app that I'm working on is automatically showing the splash screen only when it goes into background to make a call.
The other functions of going out of the app and becoming active again does not "activate" the splash screen. For example, going out of the app into an external website, phone map or another application and coming back into the app will show user the previous state and does not show the splash screen.
Is this something that can be controlled by the app side or is this an iOS feature that apple automatically handles when a phone call is made?
I have managed the leaks on the app side and all is good now so it can't be anything to do with memory management on the app side. Is there anything else that can be done indirectly so that the splash screen will not show?
The launch image is not a "splash screen". The launch image is used to prevent show a black screen while the app is loaded, and you should use it with an in-app screen which gives the feeling of a quick launch. If you don't show the launch image, you will get a black screen.
Workaround
So, as workaround, my suggestion is that you take an static snapshot of your App, something generic (like the background and toolbars) and use it as launch images. This will give the appearance that the app start immediately, without "splash image". This is what Apple apps do, you can see this in apps like Stocks or Settings.
You see?. The left screen is how your launch image should look.
Check this Apple documentation iOS Human Interface guidelines to understand this subject.
Good luck!

iPad - iOS 4.2 Force a app to shut down

We are testing our app on an iPad with 4.2 on it.
How do we force the app to stop. We are testing the initial load section of code and of course that only fires when the app starts up.
Reminds me of a similar issue on our Android apps....
Double-click the home button, hold your finger down on the app, and then tap the red minus sign.

Resources