Company App distribution without Company Hub app - deployment

We have developed a private WP8 application, and we have registered company account on Windows Phone Dev Center.
The next step is the development of "Company Hub app" which will take care for installation and available updates.
Since we have only one application, I think there is no need to develop "Company Hub app".
Is it possible that the application itself check for any available updates? (We plan to develop webservice for upgrades distribution).
Can I do the following:
Application Check for updates
If so, take the installation of a new version
The application installs a new version of itself. (If this is possible, how to do it?)
So far I have managed to find only examples with "Company Hub app"
Thanks
Selvir K

So far I have managed to find only examples with "Company Hub app"
That's because it's the only way.
To deploy applications on Windows Phone, you have three options:
Using the marketplace
Using the company hub: you get the benefits of the marketplace, but inside of your company network
Using the XAP deploy tool. The phone needs to be developer unlocked (it's a free operation now), there is a limit to the number of apps you can deploy this way on a phone, and you lose the benefits of automatic updates
One alternative way could be to publish an app on the marketplace and mark it as hidden. Only people who have the direct link to your app will be able to download it. Still, if the link to the app is somehow leaked outside of the company, you'll have no way to control who installs the app. So don't do that for critical/confidential applications.

I am in the exact same boat. We are working on our fist wp8 app and do not want a company hub.
I found if you use InstallationManager.AddPackageAsync(String, Uri) method within your app this will go to our website and download\install the xap file very easily. Of course once executed it appears to close your app so it can reinstall but for now this works fine for us.

I happened to see this post as I just finished developing a Windows Phone 8 app for a client, which was in a similar situation. I found publishing to Windows Phone Beta Store severed them the best for the moment for the main reasons below.
The distribution is totally in client's control. The apps in beta
store do not appear nor can be searched in public store. Client just need to send
emails with the app link to its employees. Only the people with the
Windows Accounts added into the tester's list are allowed to download
and install it. Up to 10,000 testers are allowed which is more than
enough for most of the business.
It is much easier to publish it in beta store compared to it is in the
public one. It does not require strict certification as it does in public store. It is an automatic process and only takes a few hours compared to up to two weeks in public store.
From the end users point of view, after it is installed there is no difference. It is the same app and it does not expire (as of today).

Related

iTunes Connect: How to forbid members to deploy to app store but not to QA

I have the following scenario for a small sized company:
We use testflight (through itunes connect) to provide test builds to the QA team. When we need to publish a new version to the App Store, we simply press the "publish" button on itunes connect. So far, no complicated stuff.
Now, the managers want that only specific people should be able to publish the app on the store.
I could change some roles in the member sections of itunes connect in order to prevent them to deploy the app. But if I'm not wrong, there is no role that allows a member to publish builds to testflight but not to the App Store (after all, it would be too troublesome to ask for authorization only to send builds to the QA team).
I read a little bit about the enterprise developer license. With this license we are able to provide builds quite easily to our QA employees but unfortunately we cannot deploy the app to the actual App Store.
What's the best way to solve this issue? Using the enterprise license to deploy app to the QA team and use the normal developer license to deploy the app on the Store? It sounds too complicated, isn't it a better way to do it ?
This may or may not solve your needs. There's a tool called fastlane that automates much of the process of uploading apps to itunesconnect. You could create a simple app that you gave to the people who may distribute apps to QA. The user the simple app would be related to (though not visible to those users, depending on how encrypted the information in the app is) would be able to run the command to send new builds with the fastlane- generated app. But only someone with the Apple ID and password would be able to enter the itunes connect and submit apps for Apple Approval.

deployment without physical access to device

I'm wondering if there is a way to show my App to customer before sending it to store.
(and if there is a way to unlock phone to deploy the app into remotely - but officially, nothing illegal).
I need to show "work in progress" to customer who can't visit me and I can't visit him. I have Develoepr Acc and he has some Windows Device he can test it on, but I don't know how to get the app to him before I submit it to store.
Yes you can.
Check this out http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402565(v=vs.105).aspx
You can send the XAP of your project to your customer and he can deploy it on a developer unlocked device using the XAP Deployment Tool of Microsoft SDK. You can find your XAP in the Bin/Release folder of your project. Make sure you deploy your project on Release before you send it to your customer or upload on the store. Check this link you'll find out how to go about it.
Another method that is probably more applicable in many situations is to release a beta version of your app to the store. You'll be able to specify who can install it and you're required to email them a link to the app. The app is not available to the general public and will only work for 90 days from the time you publish it.
This method is more work for you but it lets you give the app to potentially thousands of users and doesn't require that they have a developer/unlocked device.
See this MSDN article for a how-to on releasing a beta application.

App Store submission thoughts/issues

App Store
We have been developing an app for quite some time now for a company, we're at the moment planning for the application to be submitted to the app store within a few weeks.
Lets say that the application will have around 10000 users.
Now, the application is meant to be used by the company's own clients, as they will be the only ones able to log in on said app.
Is an app, such as this, supposed to be deployed on the app store or is it supposed to be deployed using an enterprise license?
Will this cause any complications?
Android Market
Lets also say that said company wants us to develop same said app but for Android, and publish it to the Android Market.
Will google have any problems with an app that will only have selected users?
This has long been a nailbiter for me and also; said company knows more or less NOTHING about smartphone development.
Thanks in advance.
Is an app, such as this, supposed to be deployed on the app store or is it supposed to be deployed using an enterprise license?
If it's for clients, app store. The enterprise program is for distributing apps to employees.
You'll have to provide the reviewers with a test account that they can log in with, but it should be ok on the app store from what you've said.

Developing iphone app for an enterprise

We are developing an enterprise application and I looked at the following options:
1. Putting on itunes.
Cannot do this since our application is to be used only by our clients with a login and passwrod.
You cannot have login based app in itunes:
http://appreview.tumblr.com/post/952395621/cannot-be-intended-for-a-limited-audience
2. Using iOS Developer Enterprise
Cannot do this as :
The iOS Developer Enterprise Program should be used to develop and distribute proprietary in-house applications to your own employees within your own company. As such, your company would not qualify for direct Program enrollment in this situation. We would suggest that your client apply for enrollment in the Program, and, once enrolled in the Program, your client may add the appropriate developers from your company to their iOS Development Team.
Our client cannot add us.
3. Adhoc distribution.
This is only for 100 beta testers.
So are there any other options if I want our client to donwload our app.
Provide some minimal functionality to all users that does not require any proprietary data, but have the app download all proprietary data and enable proprietary features only after your enterprise customer logs in. Then submit it to the App store.
There are plenty of examples in the app store. Banking apps: they might advertise the bank, have maps to the nearest branch, perhaps include a calculator of some sort, but of course don't allow any actual banking features or download any account information until after a customer logs in. Security apps: provide a public weather web cam view to everybody, but a security cam view only to people who buy their expensive $100K security camera system.
The example private golf course app could have included public information on the club, the current weather, map info on local restaurants, and maybe who to contact to apply for the $10M membership, but then added private club info (calendar, roster) only to paid members after log in.
Make sure to create a test account with dummy (non-proprietary) data and give it to Apple.
You can absolutely have a login based app. I have helped someone submit one that got approved that sounds very similar to the one you are describing. Also, think about the Netflix app for example, login based, limited to Netflix users (although this is probably not as limited as you are talking about).
Your solution is clearly "Using iOS Developer Enterprise"...
Can you be more explicit about the "Our client cannot add us." ?
You can get your client to sign up to the iOS enterprise agreement so that they can install it on their phones, and you are simply a team member for them. That also shifts the liability for the app onto them, should anything go wrong.

Alternative solutions for in-house iPhone enterprise app distribution

A client has asked us to develop a proprietary in-house app for managing their back-end systems. However, we are a small development company and I'm certain that their company does not have >500 employees.
Are there any alternative, yet similar, solutions to distributing this app to their company without going through the iPhone enterprise program?
(just to clarify: obviously, we would like to go through the official enterprise program but seeing how the company doesn't have >500 employees, this isn't possible).
UPDATE (27/09): It appears Apple have removed the 500 employee limit for the enterprise distribution See here. So this will probably be our route now (which is helpful because the app is approaching completion). I'll update this as we go through the process if anyone would like me to, so that others may get an idea of what the actual process is like.
You can submit the app as a completely free app on the AppStore but require that the user log in and authenticate to use it. That way anyone can download it but you control who can actually use it. Apple does all the distribution for you for and you don't have to worry about Ad-Hoc deployments or IT departments.
You then build a really simple configuration management system on a web host (or platform like Google AppEngine) that manages the authentication of apps.
When a user launches the free app they are asked for a username/password/whatever. That information is sent to the web-based configuration management system and confirmed. If the app receives an acceptable confirmation from the configuration management system it unlocks itself for use by that user.
The app can either re-authenticate every time it launches (useful if you want lots of control) or it can store a key file locally indicating that it has been authenticated. If it sees the local key file when the app launches it considers itself authenticated and never checks again.
Whether you use one user account per person or one for the whole company is up to you.
This style of distribution is very useful if you want to have control of who can use the app but want the ease of deployment that the AppStore provides.
Apple has accepted many apps onto the AppStore that use this method of authenticating against a remote server (Skype is a perfect example).
If you keep track of device UDID on the configuration server you can also pre-load it to allow a certain set of devices to work.
Further, nothing I have described is iPhone specific so you can use the same configuration management system and concepts on other platforms like Android (or even desktops) if you ever port the app or build other apps needing this in the future.
Also, since the action of authenticating devices is not processor or data intensive you will likely never incur a cost if you build this on Google AppEngine as you will never go over the free quotas and you will gain the stability and scalability of Google's backend architecture.
As this particular deployment is for managing an in-house back-end system deploying it through the AppStore can seem insecure because there is proprietary information embedded in the app, in particular the information that allows it to connect to and authenticate against the back-end systems.
The solution to that is to not include this information within the app and simply have that information be part of the response that the app receives from the configuration management server. Basically the app contains the logic necessary to perform its function but without the connection information it has no ability to manage any back-end system.
If you make the app authenticate every time it launches you can change the connection information on the configuration server and the app will update to the new information without any new deployment being necessary. The user just needs to restart the app. This gives your client the flexibility to change their internal network configuration without invalidating your application code. You could also make this information manually configurable within the application but then you incur an IT cost when setting up the application on each device and if you already are going to set up a configuration management system you might as well use it.
To further secure the above solution you may want to have the configuration management system be in-house and behind the company's firewall so that regardless of who gets a hold of the app they cannot connect to the config system unless they are within the company's network.
I was researching this yesterday and today, and it appears that Apple has just (within the past week) removed the >500 employee requirement for enterprise development. However, I believe you will need to develop/deploy for a particular client using a development toolkit registered by the client.
So if you do work for client A and client B, both client A and B will need to sign up with Apple as business developers, at which point you can develop apps for them (as a contractor) and use their tools to build and deploy within their enterprises. I would think it would be a good idea for your company to also be registered as a business developer.
Apple does still require you to have a Dun & Bradstreet DUNS number to sign up as a Business Developer.
About the only real choices you have are...
Up to 100 devices as ad-hoc distribution.
Enterprize distribution (requires > 500 employees)
Everyone has to march their device down to some IT-central and get built as a "developer" device. (yikes!)
Jail-broken.
Jail-broken may sound scary, but it's actually pretty advanced, now-a-days, and can be managed quite easily. Still, it voids your warrantee (unless you're willing to restore-to-factory and be not-honest about it ;)
Still, technically, it's an available option and can be made to work, if you're willing to plan it out.
Let us know what you decide, and the pros & cons of that method.
Another obvious although not neccesarily pleasant is to submit your app to the app store as an app but can only be accessed with a client password. Assuming you can get past the aapp store process this might work for you.
Olie said:
About the only real choices you have are...
Up to 100 devices as ad-hoc distribution.
Enterprize distribution (requires > 500 employees)
Everyone has to march their device down to some IT-central and get built as a "developer" device. (yikes!)
Jail-broken.
But to be clear (correct me if I'm wrong):
if you use the "Ad-hoc" distribution method, your costumers will see the app vanish after exactly 3 months.
only up to 100 devices can be used for testing (i.e. used in "developer mode") and moreover, the app will vanish after 3 months.
So, Apple doesn't give us any choice, are you really big (>500 employes)?? ok so you can do what you want etc otherwise... "byebye"
Moreover, forget about what "Bryce" said before, an app like the one he described would be rejected with the "limeted audience" motivation.
iOS is not for enterprise app....if you don't want to rely on some clever hackers (i.e. jailbreak)
Ad-hoc distribution is limited to 100 devices per app, that's true, but you can add the project n times to the apple developer center, so you can deploy it to n * 100 devices
How does apple ensure that your enterprise has greater than 500 people? I'd give it a go through the enterprise program anyway...
I would not jailbreak, I would not do ad-hoc because it is limited to 100, and I wouldn't make everyone put their phones in developer mode.
For future maintainability, enterprise mode is the way to go, so see if you can navigate your way through the process without mentioning that you might not be quite 500 users.
Also, I saw your comment about developing using MonoTouch. I would talk to Apple about this before you do anything else, because given their recent policy changes I am pretty sure this will get your app denied from the App Store and the Enterprise program.
Edit: I checked the Mono web page. It seems like Apple may still be letting mono apps in, and the Mono creators insist that it is kosher, but you might be running the risk of having your future app pulled from phones at any time.
A better edit: Straight from the mono website: Enterprise MonoTouch
It is important to point out that the new iPhone Developer Agreement terms are for AppStore deployment and not the Enterprise program that allows deployment of in-house application to users in the enterprise (using the Enterprise Deployment program).
So you might be good there as long as you can get into the enterprise program.
You can completely bypass the App-Store or Enterprise Developer Program approval process, if you develop your app as pure HTML5 solution.
This technology is called webapps. And they can be pretty advanced in functionality. You automatically have cross platform readiness and very easy deployment options (as webclip this can be distributed via .mobileconfig configuration files)
See http://www.apple.com/webapps/whatarewebapps.html
There is another solution: an own app store:
http://rhomobile.com/products/rhogallery/
unfortunately only in combination with RhoHub.
Or:
http://www.appcentral.com/
More info:
http://www.apple.com/iphone/business/integration/mdm/
http://www.cio.com/article/638175/Emerging_Tech_Alternatives_to_Apple_App_Store_For_Enterprises?page=2&taxonomyId=3002
In theory the proposed solution of publishing a free app meant for one company is not valid, since published apps in the app store should not be intended for a "limited audience" (whatever that means), according to:
http://appreview.tumblr.com/post/952395621/cannot-be-intended-for-a-limited-audience
Has anyone tried this with success? Any other ideas?