Separate iOS apps rely on each other's mobile data permission - ios

I have two iOS apps: App One (com.example.appone) and App Two (com.example.apptwo). Both apps use Reachability to detect if the app can access the Internet.
Both apps work fine on WiFi but I am experiencing some very weird behaviour when using them on mobile data. If mobile data is enabled in Settings for one of the apps but not the other, neither of them is able to use it.
Here's a summary of the mobile data permissions and the ability of the apps to use mobile data.
AppOne not allowed, AppTwo not allowed, AppOne and AppTwo unable to use mobile data
AppOne allowed, AppTwo not allowed, AppOne and AppTwo unable to use mobile data
AppOne not allowed, AppTwo allowed, AppOne and AppTwo unable to use mobile data
AppOne allowed, AppTwo allowed, AppOne and AppTwo apps able to use mobile data
As far as I understand, permissions for other apps should not affect other apps' ability to use mobile data. Is this a bug in iOS or have I got something wrong here?
Note: This issue does not occur when I deploy to my phone from Xcode, only when the apps are installed from the App Store.

After talking to Apple Technical Support, I learned that the issue was caused by both apps having the same executable UUID. Apparently the cellular data authorization system uses the executable UUID.
The solution here is to make sure there is something (source file, build setting, etc.) that is different between different apps.

Related

Can a third party app prevent other IOS apps being opened or used?

This question was asked a couple of years ago (iOS app Blocker possibilities) and I'm wondering if there is anything that has changed in IOS since this question was answered in 2017 that would allow a third party app to prevent an app from being opened or used (that doesnt use the Device Enrolment Program)?
As mentioned in the linked post, the freedom app prevents the use of other apps via a VPN. I am wondering if there is a more straightforward means of a third party app blocking other apps or whether sandboxing means that the use of a VPN is the only way of a third party app blocking other apps?
I am not an expert, but it seems like Freedom is routing an iPhone's network traffic through a "local" VPN. This means that, while you could open an app like Chrome and navigate to google.com, Freedom's VPN would not forward the request.
I haven't installed or tested the app, but their website is carefully worded: "Install App Blocker" to install the Freedom app blocker. This blocks content on other browsers like Google Chrome and for apps."
I read "blocks content" to mean you can open the app, but it will fail to load content without a network connection. I haven't tested, but I suspect that you could still use "offline" apps.
Here is a screen grab of their website.
As you noted, Apple's mobile device management (MDM) solution is capable of preventing apps and other activities. Here is the list for MDM restrictions, and a list of Supervised restrictions.
It's my belief that a third-party app cannot prevent another app from functioning. Freedom is playing a network trick. To stop an app from actually booting would require a jailbreak. But I haven't explored this space in depth.

Track iOS App’s Mobile data and WiFi usage

I am working on a mini project to track iOS app’s mobile data and WiFi data. I saw some apps doing that through VPN , but I had no luck with NSExtentions.
Any reference is appreciated. I would like to collect device level data which includes all apps . Similar to the stats available in
Settings-> Mobile data
Apart from native iOS client , other apps listed here also achieve this. I know its possible through VPN but i could not find any development documents related to it. Is there any other method apart from VPN?

Is it possible to turn on/off notification from different applications on ios

I am working on an application that will allow the user to turn off cellular data or at least turn off notifications from other applications on the device, all through my application. Is this possible? (I know that in Android it possible)
Your app has absolutely no control what-so-ever of other apps, not even indirectly. The one exception is using a custom url scheme to open the app, and optionally, ask it to do something.
No, on iOS you can't even find what other apps the user has installed.
Even if you could, they are all sandboxed. You can't touch anything inside the other apps.

Supervised devices and App restrictions in iOS

My question regards a possible remote Parental Control system for iOS devices.
I understand how to apply web filtering options that would allow parents to whitelist and/or blacklist specific URLs and domains remotely on their children's devices via managed profiles and MDM server but is it possible to whitelist/blacklist certain apps from the iTunes store - i.e if the parents want to remotely block the installation of say Snapchat and Viber for example? It appears that filtering right now is only possible based on the iTunes "appropriate age" tag - i.e 4+
Thanks!
You can always blacklist apps using an Mobile Device Management software. When an app which is blacklisted is installed on the user's device, the device will show as not compliant. You can also find which all blacklisted apps are installed on the device. Then the admin can prompt the user to uninstall the app. If they are not complying the admin can lock the device until they agree to comply.By using an MDM you can enforce additional restrictions like block camera etc. For a more strict management you can put the Apple device on supervisory mode, which have more options for device restriction. iOS 9.3 goes a bit further in this area by preventing the blacklisted apps from being shown or installed.
No, that level of control is unavailable in iOS. The closest you can get today is to either set the appropriate app age or to use the app installation restriction to block the entire App Store (keeping in mind that on iOS 8, this restriction will also prevent app installation by MDM as well).

What is Sandbox in iOS? Can I transfer data between one app to another app?

Is there anything like sandboxing an iPhone Application, what are the benefits on using sandboxes and do they allow me sharing data between one app and another?
I found this link while searching but not able to understand as I'm new to iOS development.
http://www.iphonedevsdk.com/forum/iphone-sdk-development/56207-what-is-sandbox-in-iphone.html
From The iOS Environment
For security reasons, iOS places each app (including its preferences
and data) in a sandbox at install time. A sandbox is a set of
fine-grained controls that limit the app’s access to files,
preferences, network resources, hardware, and so on. As part of the
sandboxing process, the system installs each app in its own sandbox
directory, which acts as the home for the app and its data.
one solution to transmit data from one to another app is via URL Schemes
Mobile device application developers use the sandboxing capability of iOS to ensure the security of the user data and to ensure that the application don't share data with other applications installed on the same device.
The sandbox forms and maintains a private environment of data and information for each app.
The sandbox can minimize the damage that can be done from a potential hacker but it can't prevent the attack from happening.
Although Apple has built robust sandboxing features into iOS , it is upto the developer's to ensure that their apps are written securely.
When an app is installed on a mobile device, the system creates a unique directory for it.
Sandboxing only prevents the hijacked app from affecting the other apps and also other parts of the system.
iPhone apps are all sandboxed, meaning there is no sharing of files between applications.
There are some ways of transferring data between applications but they're very limited. Look at URL schemes.
http://wiki.akosma.com/IPhone_URL_Schemes
The apps are in sandbox by default. You do not need to worry about putting it in a sandbox manually.

Resources