Delete an application from iOS device using Push Notification - iphone

Is there a way could i delete my application from some users iPhone by sending a push notification?. The reason can be a security concern.

This can't be done for any iOS device, but it can be done for devices enrolled in Mobile Device Management (MDM). Apple has documented all of the available operations, including removing applications remotely.
An MDM server can manage third-party apps from the App Store, as well as enterprise in-house applications. The server can remove managed apps and their associated
data on demand or specify whether the apps are removed when the MDM profile is removed.

No. You can't execute any code in response to a push notification, unless your app is already running in the foreground. And you definitely can't programmatically delete your app in any situation.
Your best bet would be to have your app phone home when it starts, and not function unless it's supposed to.

You cant delete your application programmaticaly. But you can block some functionalities using client server communication. For example, Write in your code to send a request if security risks identified, and based on response you can control the program flow.

Related

Automatic OTA updates in an ios app which is locked down with guided access

My client needs to find a way to automatically push app updates to a number of iphone 3gs devices remotely. These devices will be in guided access mode so the users will only be able to access the app in question.
I believe we have two option for distribution:
B2B custom app via the Volume Purchase Program
In-house app released with the Apple Enterprise Program
Having researched our options I can see that over the air app updates can be achieved by either:
Building an in-app update functionality to check for new updates (Enterprise only I am guessing?) and automatically update and restart the app
Using an MDM such as http://www.air-watch.com/ (as I understand Apple Configurator must have devices plugged in via USB to work?)
I am wondering if anyone can tell me whether either of those options are possible with the devices being in guided access mode?
Or are there any other solutions, which I have missed, that can automatically manage the app remotely while the device is in guided access mode?
You can solve this with an Enterprise distributed app.
App only. Update check for an OTA-Update from your app when the app is coming to the foreground (or some other metric at your clients leisure, like added time delay, etc). Basically self explanatory; you implement a call to your clients/your API to check the version and inform the user of a new one. The update can either be optional or mandatory (preferably announced by the API and changed when needed); present the user with an alert about it. The user acts upon it and you OTA install via an ITMS link provided by your API call. And that's it.
MDM. Tbh, I'm a bit on shaky ground here. Theoretically this is all possible via MDM too, however I am not sure if it is the (varying) MDM solutions or some misconfigurations, but clients usually seem to lose control after some time.
Both. Yes, you can perfectly well live with both. MDM while everything is fine, and as a backup a well structured App+API mechanism to push the OTA updates out. This is especially useful if you have customers where some departments are under MDM and others are not. So, some may get it via MDM (and if all else fails via the App itself), the rest will get it via the App.
The tradeoffs are a matter of personal preference, if there is a fully working MDM solution in place the update will be pushed out and the user however 'malicious' can do nothing against it. But the same is true for the 'App only' solution, as you have the option to not let him use the app if he does not update (either by not providing a cancel button or, as you are in an enterprise environment and there it is allowed doing an exit(0)).
From experience I prefer any solution that has the 'App only' option as it is the last fallback if anything on client side fails. Whatever may be added on top is just sugar to the cake.
While not strictly relevant, the 'App only' solution always goes well with Push Notifications when an update came out.

Is it possible to deploy the App to the client permanently?

I have developed an App for my client and now I need to deploy it to him within his company, I have learned that, we need to make mobile provisions on Apple's developer portal,include the devices in it, so the App can be run on that particular device.
Also, if the period of our developer account expires we have to renew it.. in order to let the App work normally on the device.
But i want to know if there is any way the App can be deployed to the client permanently.. ? i.e once we handover the App to the client, he need not to come to us again.. and use it for as much time as he wants .. ?
Also, please note that the device that the client is using in NOT jailbroken ..!
You can create Distribution provisioning profile which currently have validity of one year, that means your application will run on clients device for one year without your effort.
After one year, you need to reattach by creating new profile. This can be done very easily from console.
Visit this question.
App that users download from App Store will continue working even if the developer of that app doesn't renew his subscription.
See this So the solution for you is. Upload the app on app store. Let your client download it. Once he download it even if your apple certificate expired he can continue to use the app.
However, once your apple distribution profile is over then your client won't be able to download the app from app store.
The only way to do this is using Apples Business-to-Business App Store. This allows you to specify which clients can download the app. The app is otherwise handled just like a normal app store app and does not expire.
The ad-hoc distribution you referred to is not suitable for distributing apps to clients. Anytime a device changes or is added you'll have to re-provision it and re-issue it.
One other alternative is to have your clients get an Enterprise developer license. The app would still have to be renewed every year but they could install it on any device and better yet, you would not have to have it reviewed by Apple.

can I implement the push notifications without enrolling in the developer program?

I'm quit new in iphone developing and I used to test my apps on my jailbreaken iPhone 3Gs without enrolling in the developer program.
However, I needed to implement push notifications from my server but all the tutorials I found refer to logging in the provisioning portal to obtain App ID which I can't access without the developer program.
So here is the question: Can I implement the push notifications without enrolling in the developer program ?!
No, the required certificates and profiles for your server need to be generated by Apple, so you can't forge them.
No, you wont be able to do that kind of communication while your app is closed. It will work only when the user is running your app thus making it useless.

Creating an iOS application which is distributed to limited selected audience

I just started creating custom client application for IOS, Which i have already developed for PC and Android clients. Idea of these apps is to use SQLite database file, which is created in PC admin app and is actualized by Internet. Development of this application is payed from one company and shoud be distributed to selected group of people.
What i want to ask is how to distribute this IOS application to certain audience of people (who has right to use it)? Should I put it on app store as free app without database file which should be downloaded to iphone from secret site?
The best way to do it is via the iOS Developer Enterprise Program.
As for the data, you could link it to a web API if the data is growing or changing regularly. But for static data, you could distribute it by including it in the application itself. See CoreData and other tools for more information.
You can also release it for free on App Store and provide a custom login. However, this is not recommended as this application is useless for the rest of the world. The only reason you would want to do this is if your custom clients can register on your website or some place else and you want to allow them to access the app. This is generally done for subscription based applications. But I presume yours is not such a case.
There is also Ad Hoc distribution, but with that you are limited to 100 devices.
You can read more about distribution.
Note: this may not be the bust way but here is my solution for it
I established a server and set user credentials on the server before, i share credentials with the client and he/she logs in with them.. Later they can edit their credentials, my app is on the store for any body but someone who doesnt have those credentials can't log in..
What you're trying to do is this:
https://developer.apple.com/programs/ios/enterprise/
An ad-hoc distribution is your solution.
https://developer.apple.com/programs/ios/distribute.html
If you're planning to distribute the app to more than 100 people, go for their Enterprise program:
https://developer.apple.com/programs/ios/enterprise/

application specific lock in iphone

is it possible to make an app in iphone which locks other application. for example i want to put a lock on sms application, contacts etc. if anyone knows please reply
The thing which you are asking is not possible.
Apple supports SANDBOX environment , through that any application can not access other application data.
So you cannot stop executing other applications. Unless the device is jailbroken. then cydia supports such kind of applications.
And If you are having enterprise account to manage the enterprise devices , then this thing will be possible.