standalone iMessage apps behave different in iOS 12 - ios

I’m trying to create a standalone iMessage app. I had something that worked in iOS 10. I would be able to send a message and show a view controller when the recepient tapped on the message it would open the view controller for them. This same code behaves very different in iOS 12. When the user taps on the message he gets taken to the app store instead of the view controller.
I’ve been looking everywhere on information about this, but there seems to be nothing on this topic.
Does anybody know what changed or how can I dispay a view controller instead of the app store?

This may seem obvious but I suspect you've missed something in your testing.
The iMessage app will launch if is installed on the receiving phone. The installation test is based on the bundle ID so if you have mismatched that it won't detect your app.
When the app has not been installed, iMessage as of iOS 11 includes a link to take you to the store.
I'm working on a complex iMessage app and along the way created a bunch of small sample apps to test different points. I've just made the repo public if you want to check out some im-plausibilities

Related

New requirements for iOS app - keep them accessible to users/customers

I got an email from Apple that apps now require iOS13 + storyboard for app launch screen for existing apps. (I do not use storyboard for main app functionality)
I have developed a couple swift1/swift2 based for schools a long time ago. (Still works well)
Can I somehow ditch the app store and then provide direct access or download for school pupils?
i.e. is there any way forward to simple keep the apps-as-they-are? Maybe limited download availability?
Or will I have to take plunge back into app-building?
The requirement of a Storyboard launch screen is only when you need to submit an app update. If you are not wanting to update your app any more, then it won’t stop working because of this new requirement.
Regarding distribution outside of the App Store, you could use Adhoc distribution which requires you to know the device ID’s of the devices you want to install it to.

How can I get this App Store purchase window in my app?

I have implemented subscription IAP in my iOS app, but now my boss showed me several apps that provide a very nice purchase ActionSheet like window, when purchasing:
I only get simple Alerts that confirm purchase.
Is this a custom library? I see it in several apps, so it doesn't seem to be a pure custom design. Would love to use it as well.
The first image (The nice User Interface) of yours is from the latest iOS version (iOS 11). That screen gets displayed when you make a purchase in iOS 11. Previous versions will show you the second image for purchases. Get an iOS 11 device and go to App Store to download an app, and you'll get that new fancy UI.
To get that new UI, the app must be compiled with iOS 11 SDK.

Launch game from iOS app and return to it once closed

I have developed an app and I want to run another app installed on the phone and downloaded from the store (a game) inside a portion of the screen.
As I understood from my search, this is not possible. The next best solution would be to launch the game from my app and always return to it once the game closes.
I have been able to bootstrap a solution with a particular game using URL Schemes but is there a general solution working with any app downloaded from the store?
Do the answers provided there still apply or is it now possible? Can you run an iOS app inside another iOS App
No, you still can not run an app within another app.
The only way to launch another app from your own is by using URL schemes, and there is no way to make a third-party app reopen your original app once the user completes a game.
You cannot directly obtain a list of installed applications to launch, but you could use iHasApp and possibly your own dataset of known URL schemes to check if a given app is installed on the device.

How to removed killed app from recently used list (iOS)

I am developing a helper for an automated testing suite. There is a requirement to kill/reset the application being tested, so the app can be started again "fresh".
I know killing an app is against Apple guidelines; there are many questions here about that with sensible answers ("don't do that!"), but this is a different scenario; and the app will never be on the App Store (as it has been instrumented for testing purposes).
Currently, our helper calls "exit(0)" from within the app to terminate it. This works fine, but the app icon is left in the recently used apps list (double click home button).
I need a way to programatically remove the icon from the list (or, terminate the app in such a way the icon does not remain). Or maybe a way of refreshing this list somehow. The only way I have found so far is to uninstall the app and install it again.
This must work on the device (as well as the simulator). I can use solutions that make use of USB-only functionality (e.g. provided by libimobiledevice and friends), or calling a function inside the app, or a Private API call. Assume the device has a development profile on it. Jailbreaking is not an option.

Lock iOS app in single app mode programmatically

Note : I don't want to submit this app to app store.
What i want to achieve :
I want simple app with one view having two button Lock and Unlock.
Lock - This button will lock device. Only this app's screen will show nothing else will be accessible even after restart same screen will show up. Home button, gestures will get disabled similar to single app mode.
Unlock - This will unlock device and switch to normal behaviour of device.
iOS :
I want this for iOS 4.3 and above.
I have checked following solutions, but these don't match my requirements
Configuration profile
Lock-down iPhone/iPod/iPad so it can only run one app
But it is manual (reboot device, open app which you want to run in single app mode). I want to do it programmatically the way i mentioned above through my app.
Guided access (iOS 6 and above)
How to lock down user to Single App mode in iOS 6, Programmatically?
I want it do for all os and programatically.
Is there any way to do this ? As i don't wan't to submit it to app store is there any private api, some hack for springboard to achieve this ?
Thanks in advance !!
As I know in iOS 7 there is a new feature which allow to do exactly what you want.
However, it's only applicable for iOS 7 (and I believe it's only applicable to a supervised devices).
1) You will need to install restriction configuration profile with autonomousSingleAppModePermittedAppIDs key (take a look here)
This is one time step and a user will need to manually accept this configuration profile.
There is another option to use MDM to install it silently, but it could be an overkill for you.
2) You should use API:
UIAccessibilityRequestGuidedAccessSession (to lock/unlock)
It is defined here
3) And most beautility part. All of it is officially document. So, you can even submit it to AppStore.
P.S. Why do you care about 4.3 or 5? They have tiny market share by now. Most likely even iOS 6 has below 20% market share already.
Update 1
Potentially, you can try to use API which sends clicks and keys (search for GSEvent in iPhone-privateapi tag). May be using these API's you can do triple home to toggle accessibility on and off.
If this work, I think you should be able to cover iOS 6. I am not sure whether both this API and triple home click were available prior that.
It looks like this private API is unaccessible anymore in iOS 7. So, probably you can ignore this idea.
Just wanted to write on this even though this is old as i needed to implement a similar solution and i got it working. The steps for me as follows and a note here is that this involves MDM and other specific steps.
My requirement was as follows. Each of the iPad at different locations has a set of apps installed.For ease of it lets assume each Dept. has their own apps. Participants open a app related to their dept. to take a test, the APP automatically Locks the iPad to single-app Mode and at the end of the test, it will unlock it self.
Supervise the iPad/iphone using the Apple Configurator.
Install the MDM related files ( Each MDM has its own set of instructions, usually involves downloading a profile).
Every MDM has a option of Single APP Mode or MultipleAppMode. Select the second option and add the app IDs to the list. (A single APP mode works pretty well with MDM's but i did not want the app to be locked to a single APP all the time).
I used the UIAccessibilityRequestGuidedAccessSession api to lock unlock the device from single app mode.
http://bobxcode.blogspot.com/2015/12/programmatically-implement-single-app.html
Thanks,
Bob
In MDM configuration, There is an option
autonomousSingleAppModePermittedAppIDs
Optional. Supervised only. If present, allows apps
identified by the bundle IDs listed in the array to
autonomously enter Single App Mode.
Availability: Available only in iOS 7.0 and later.
But this needs Supervised Device mode.

Resources