Kiosk app: downloading an launching in-app (inline) apps in iOS - ios

Lets say you have a sort of a news stand kiosk app where you offer interactive magazines for download. Our newer mags are HTML5-based where we download the individual issues compressed from the server, decompress them and launch them in a (inappbrowser) modal window. Our older mags are basically individual native apps.
Could the older native mags (IPAs) also be downloaded from within the kiosk and launched somehow? Is this technically possible (and allowed at the same time)? Either launching it as a separate process/app or inline i.e. somehow from within the context of a kiosk application? Is that even possible launching an app within an app?
Of course if needed to support the process we could reexport all older apps with correct provisioning, etc. and they (in-apps) would be made available for the review process. Just looking for options on whats technically possible currently.
Thank you!

Assuming:
The older native mags can be downloaded from the AppStore
They each support a different URL scheme (e.g. mymagazine1://, mymagazine2://)
you can do the following:
When the user indicates he/she wants to open magazine 1, evaluate
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:#"mymagazine1://"]]
If it is YES, open the app with
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:#"mymagazine1://"]]
If it is NO, open the App Store app for the specific magazine. This can be done in the same way as described in this question.
You cannot open these apps 'inside' your main app, that is simply not possible.
I'm not sure if Apple will approve these apps though - they could ask you to provide this content via Newsstand.

Related

Is it possible to build an iOS mobile application for the App Store to export iMessages to PDF?

I found many products that can do this but they are desktop-based, e.g., Mac and Windows. The apps I found in the App Store still required a desktop to complete the process.
Goal: Build an iOS app to export iMessage to PDF (no use of a desktop)
Challenge: Does Apple allow this type of functionality and or will they approve the app?
If you have any reference links and or documentation it would be much appreciated.
No, it isn't possible as there is no API that allows apps to access iMessage content. This is a privacy restriction.

Swift - how to access all pdf files on device

I am trying to build an app that will allow users to see all pdf files that are on the device (in some kind of a list with a preview) [Regardless of which app it belongs to on the device, all should be shown]. Is there anyway to achieve this?
Sorry but this is not possible on an iOS device because of a feature called sandboxing. Apple does not allow an app to access the sandbox of another app. Each app sits inside a sandbox of its own. This is iOS's security feature. There is no way to go around this feature.
Reference - About App Sandbox

Is it possible to read an installed app's info.plist in iOS?

Is it possible to read any info from installed apps in iOS, like reading App2's info.plist file from App1? App1 is looking to query which version of App2 got installed.
This is of course an old question, but you haven't specified whether you own (or are the developer of) the other app or not?
If you are the developer of both apps, then this can almost be achieved using App Groups.
In App2, you could write a file (or even just copy the whole plist) to an "App Group" that's shared between the two apps, and then read it from App1.
Using this method for checking whether App2 had been updated would not work unless App2 had been run since it was updated (or updated the file in the background using Background App Refresh), and also wouldn't work if you're not the developer of App2.
Like I see, there is no possibility because every app is working inside a Sandbox which doesn't allow your app to access other apps information.
Here is some information I found in other posts:
Other post
Apple's File System Programming Guide
I think the only thing is passing text or files to apps which can handle the filetype you want to access (text -> Whatsapp). You can do this by using the UIDocumentInteractionController or by calling an url by the URL:
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:#"whatsapp://"]]

Unofficial API - Access other apps bundle and icons - iOS

I've seen this which pulls the app from the internet and this which is what I'm looking for, but I'm not publishing to the app store.
So is there a way to do the following:
Go into app bundles on the device and extract the icons for those apps using official and/or unofficial APIs ?
As #Gavin specified: Jailbreaking is not an option for this particular case.
Apps are sandboxed on iOS, so even if you're not submitting to the app store, your app is still prevented from accessing files outside your sandbox, which includes the files of other apps on the device.
Now if you wanted to jailbreak your device, you could access files outside of the sandbox. But you didn't state that you were willing to do that, so I am assuming this is out of the question for you.

How to get a list of your iphone apps

How can i get a list of all my iphone apps (even pointers for each app will be helpful)?
I'm developing an app which contain some screen that should have a list of all my installed apps (with their icon) and the option to select one to launch it in the future depends in other function of mine.
Thanks alot!
There's no way to accomplish this, because each app is sandboxed.
You would be able to determine if select apps are installed if they have custom URL schemes. For example, the Facebook app can be launched with the custom url scheme "fb://", but these aren't guaranteed to be unique, so a different app could use a scheme that's well known to belong to another app. Also not all apps have a custom URL scheme, and you would need some master list (that would need to be constantly updated to be accurate) to check for the presence of each. So you could maybe detect a select list of well-known apps with custom URL schemes, but never get a list of all of them.
If you just wanted to detect your own apps, you could have custom URL schemes that are almost certainly going to be unique set for each app, and check for those.
You could also jailbreak your device, but I'm assuming you want this functionality in an app that is distributed on the app store, so you wouldn't be able to add functionality that requires a jailbreak to work.
EDIT:
Here's an example showing detection of the Facebook app being installed:
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:#"fb://"]])
{
// Handle the Facebook app being installed
}
Note however, this won't give you any information about the app. Any app developer could add the "fb://" custom url scheme to their app, which would make this falsely detect it.
If you want to find lists of custom url schemes for iOS apps, just search in Google.
another way to look at this is to present the user with all of your app in the appstore. If they have any apps installed on their device then in iOS 7 they will see a button called "Open" next to each of them.
For example you can have a UITableViewCell or a UIButton that says "Checkout Our Apps". In the code you would add this.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:#"itms://itunes.com/apps/sixaxisllc"]];
Replace SixAxis LLC with your iTunes developer name and when users click on it, it will launch AppStore app with only your apps are shown. (With Open or price amount next to each of them)
NOTE: test this on actual device and not in simulator
Because of the Sandboxed environment, all you can do is test if it you can open a custom URL.
Akosma Software maintains a list of popular Url on his wiki: IPhone URL Schemes.

Resources