Will Apple allow this

And really if they don’t its stifling the ability to market an app…

Here is what I am looking to do…

  • Create an iPhone/iPad app the would be of a benefit to the CUSTOMERS of various vehicle dealerships
  • as an incentive or “perk” the dealer would give a free copy of the app to the customer when they purchased a vehicle
  • this would be done [and this is a question], by giving them a “promo” code to use on the Apple Store… however the promo code would have to expire when I terminate it, not one for each copy downloaded
  • but here is the kicker… each dealer would have a UNIQUE version of the app. 95% of it would be identical for all dealers, with the 5% difference being “branding” text and graphics, and maybe the dealers URL embedded. This could all be done with a “branding” module

So I’m not sure how this would be done. I could (crossing fingers) have literally 100’s of vehicle dealers across the country, the app would have to be accessible ONLY by people with the “dealers code”, and would therefore not show up to the general public.

I want to be able to do this with the minimum amount of hassle from Apple… and I’m not even sure what the policy would be, since the “user” (ie. the dealers customer) is downloading it for FREE, but I’m planning on selling the licensing rights (which is basically the inclusion of the dealers “brand”).

If this were a desktop app, it would be easy. Download an app, enter a code into the app, which then downloads a file containing the “branding” information
But I don’t think Apple would allow an iOS app to do anything remotely like that, nor do I think they would be keen on hosting 100’s of copies where the App Store wasn’t collecting their 30% (remember its the end user that would download the app, not the dealer themself)

Any ideas on how to approach this?
I’m in the design stage now, so its the best time to consider how to handle this

Last time I used promo codes, it was a case of request some, they send you a bundle, and they expire after a time or when used up.
Two people cant use the same code.

So maybe start with - you can download the app for free, and you have to login to use it.
(Like a personal banking app does)

It could ship with them all included.
You see the branding that the code gives you.

The downside of that is that it looks generic until activated, and that includes the icon and app name.
To get round the icon issue, the simplistic method is ‘build versions of the app’

They host thousands of free apps already.
If the free apps dont generate ad revenue (like banking apps… and now that I think of it I have a free app there which generates nothing for Apple myself…) then Apple get nothing apart from the $99 they charge you to have a presence.

Maybe ‘Enterprise Apps’. Those can also be loaded on the customers iPhone from outside the App Store.
I think the customer needs to approve the App first. Or the device somehow need a trust profile or certificate. But maybe this can be automated.

But I see plenty of Apps in the regular App Store that are only to support specific products or customer price lists.
Instead of promo codes, I would supply them with the name/link of the App and a login.

The promo codes are in limited numbers, and this is pretty cumbersome.

Why not make the app free and have users log in ?

All you have to do is to provide login information upon submission for the reviewer so he can test the app.

“Log In” has been mentioned twice… Log in to what? I do not want the end user or dealer tethered to a server that I have to maintain. And even if the server only accepted an activation code and provided the branding information. How is Apple gonna allow the file system of the app to be changed after installation? They have no idea what data might be in those packages.

The issue here is that I can’t bundle all the branding info into a single version. there could be 100’s or 1000’s (hopefully), and if so, they would occur as I managed contracts with the various dealers over time. Its not like I know a finite amount up front… As a matter of fact that is the idea… to be able to deploy new branded versions on the fly.

To be able to add new brands on the fly I would recommend maintaining your own server, as much as you don’t want to.

Post the app for free in the app store
User Perspective

Download app Enter "Dealer ID" Use branded app

Dealer Perspective

Buy service for [x time] Provide branding materials to you Get "Dealer ID" Offer download and key to user

By maintaining your own server you can add dealers, remove dealers, disable ids, and all that stuff that makes you money. Provide Apple with a “demo ID” and explain what it’s for (as an identifier for dealers.) Don’t call it a key or a login and you’ll be more likely to get approved.

The server would respond to the id with the materials to download, the app would download them to it’s app support and place them in the appropriate positions. As long as you’re not downloading executable code and running it Apple should allow it.

Apple lets asset downloading happen, I’ve seen it in games that are over 100mb, but need to be less than 100mb on the app store to download over cellular. See Minion Rush for an example.

Drop the app review team an email and ask them too - it can’t hurt to ask.

In one app I wrote, new data can be downloaded from my site site when the app starts up.
Its not unreasonable for the user to ‘log in’ by typing a code into the start page which directly relates to a folder on ivebeenthinking.com (because the content would have to be obtainable from somewhere, and presumably subject to changes if the garage changed branding or name)

Then it will download content and put it into its sandboxed document area, with defined names. (splashscreen.png, logo.png etc)
You app just needs to look in the documents folder when it runs: if there is no ‘foldername’ yet, ask for one.
If there is splashscreen etc etc, use them.
Maybe now and then check ‘last modified data’ at the website.

If the site goes down, the app keeps going.

For testing purposes in the app store, you would probably need to provide a working login/foldername whatever to the tester at upload time.

[quote=252658:@Dave S]“Log In” has been mentioned twice… Log in to what? I do not want the end user or dealer tethered to a server that I have to maintain. And even if the server only accepted an activation code and provided the branding information. How is Apple gonna allow the file system of the app to be changed after installation? They have no idea what data might be in those packages.
[/quote]

Apple is doing that daily for all sorts of corporate apps which in fact access dynamic information the reviewer does not have at the moment of submission : newspapers, facebook, and yes, even cars.

You stated that you are not keen on supporting a server but if the app was nothing much more than an embedded web browser you could do all the branding and UI via HTML5 and Javascript, you can use HTML5 local storage if you want the app to do things offline and/or store branding locally and you could even support other platforms such as Android/Windows Mobile with similar simple apps.

There is no HTML/Javascript or webpage presense… it is a 100% native localized app…

That looks extremely simple to do in iOS, just as it is in Desktop, and there should be no issue with the reviewers. You can download any data you want.

What I really want is for the end user (and each dealer for that matter) to have little or no information about the fact that other dealers may be distributing this app to their customers. I want to make this a vertical market for me. But in order to get the dealers to pay me, they have to see a benefit (their logos, their color scheme, their name, website URL etc).

But if the end user would have to download a “generic” version, and enter a code to “brand” it to their dealer, that removes a huge amount of the benefit… and makes the app less “just use it”

This is why I was hoping there was a way to deploy 100’s of “versions”, and restrict the access to any one version based on some kind of “code” provided at time of download [not at time of activation]. This way customers of Dealer “A” would only know about the brand for “A”, and Dealer “B” wouldn’t know his competiion was also distributing a version.

Unless you create an app for each dealer, have it admitted by reviewers, and then issue Promo Codes, I don’t see how you can chose at download time.

This is what I am trying to figure out.
I am hoping to have the branded “versions” NOT appear in the public store, there I want to sell a generic non-branded version…
And since entering an “activation code” is again policy, how to I justify that the user needs to do such a thing

I already have 4 motorcycle dealers and two custom car dealers interested based on an unbranded demo

Once again your own writing :

Why do you want to make it more difficult for an iOS app ?

This seems to cause the sticking point
If every dealer just listed the app under their name then you could have many using the same “base” app but distributed under their name
But you dont want to do that and that makes life difficult as it doesn’t fit with the app store model

If this were a desktop application, I wouldn’t have to deal with the Apple store… THAT is the distinction here… for an iOS app I HAVE no choice…

[quote=252728:@Norman Palardy]This seems to cause the sticking point
If every dealer just listed the app under their name then you could have many using the same “base” app but distributed under their name
But you dont want to do that and that makes life difficult as it doesn’t fit with the app store model[/quote]
exactly… I can’t believe I’m the only developer that has envisioned a vertical market app for i devices.
The dealer “gives” the app away… the customer has a useful app, that also puts the dealers name out there as advertising. The dealers I have spoken with that expressed interest all mentioned their adverstising budget would pay their share.

the only “legal” way I see so far is to register each of MY customers as a new developer, and submit THEIR branded version via THEIR Apple Dev account… but while that too is cumbersome, it still doesn’t “hide” the app from the general public. Kinda like a secret club…

a quick scan of the App Store suggests that a number of dealerships already distribute “their app” for free through the store

Hop on iTunes and search for “dealership” and you will find a bunch
They could all be the same app just rebranded many times - but since they show up under dealer names where’s the harm in doing exactly that ?
None of the ones on there seems to care that there are other dealers on there too - in fact I would expect that since I can drvie or phone or use the web to get at many dealers why would an app be “exclusive” ?

I don’t think you even need to make the website that complicated: it could just be a regular static website.

For instance, say a dealership’s “ID” is something like DLR100 and that’s part of the code the user enters in when activating the app. Your app could look on your website using that ID in the URL for the resources to download: mydomain.com/resources/DLR100.zip

When you get a new dealership, you just have to add a new bundle of resources on your website with the right name and location. Your app doesn’t change at all.

You’d have to make your app validate the coupon code (or whatever you’re calling the rest of the code the user enters), assuming that you want those coupons to be validated in some way. You could send that an external server, of course, but if you don’t want to do that, you should be able to figure out a way to to do that internal to the application itself. (For instance, embed the dealer ID inside the code, so a code will only work with that dealer.)

maybe you’re the only one trying to make it this complex ?
there are lots of others on there already

there’s no secret about “other dealers also having apps” so trying to enforce that is where you get stuck

FWIW I would not pay for such an app - why would I ?
I can search the dealers web site for free, or visit them for free etc
The app should be too IMHO but the dealer pays you to customize it & put it up there update it etc

Thats the way I’d approach this