Skip to main content
Inspiring
December 18, 2017
Question

Advertising ID on Mobile

  • December 18, 2017
  • 3 replies
  • 2654 views

I don't want to overwhelm anyone with the details of what I am trying to do, but in a nutshell, I am trying to develop a mobile AIR app for real estate agents that is customizeable that they can give to their clients and, and when the client installs it, it will look like the real estate agent wrote it themselves and will have their branding in the app.

To do this, I need to save a unique identifier from any Android or iOS device that installs the app.  Apparently, this is inconsistent approach and not supported across all devices, so I can't do something simple like store a MAC address or a UDID because not all devices will allow access to these identifiers, so I would get inconsistent results.

The only consistent identifiers that I have been able to narrow down are Advertising ID's.  These are provided by both iOS and Android devices and there are ANE's available that will give you access to these identifiers.  What I am concerned with is this - I am not using them to provide Ads to my users.  I just need to know who a user is and associate them with a real estate agent consistently.

Does anyone know if Apple or Google will throw up a fuss if you try to submit an app to the app store that uses an Advertising ID, but is not using it to serve up ads???

Thanks for any thoughts!

This topic has been closed for replies.

3 replies

Inspiring
December 22, 2017

Only solid way I can think of with a static build:

Give each agent a code, agent's customers enter that code (given by the agent) when app first starts, app uses that code to load externally or grab on disk the relevant assets.

Android has a few more solutions but Ios surely doesn't, and if you need both with one build only then that's what you are gonna end up doing one way or another.

Inspiring
December 23, 2017

IGZN and ASWC, Thank you for your suggestions.  I will have to look into localstore, but I think that is a possible solution.  I do not need persistent information about the users, I just need my app to know who they are from the time they install the app to first run.  So if I could hold a random value in localstore for two minutes even, that would work well enough for me.

But after I thought about my business model a bit more, I'm not sure I will take this approach either.  See, my app provides a very unique service that is worth money.  I don't want just anyone to be able to download it freely, because then nobody will ever pay for it if they can find an agent link and just get it for free.

I'm thinking of making it invite-only.  So, I am thinking I may put an "invite" button in the agent app, and by clicking it, the agent will be to enter an email address in a pop-up.  This will send an email to a client with an install link, and when they install the app, they will have to put in their email address to verify they have been invited to access the features.  This will at least force an agent to do a little work to distribute it to users, will totally eliminate the ability to download the app freely by the general public, and I will limit the number of installs that each agent gets with their subscription to keep them honest.  Right now, I think this is the approach that I will take.  Localstore will be my backup.

Inspiring
December 26, 2017

That model would work for Android but surely not with Ios.

IGZN
Inspiring
December 22, 2017

The followings depend on the possible levels of app customizations by your Agents, so you may pick whichever suits you and your app the best.

  • If the app is compiled differently for different agents, you can define a compile time constant with the compiler. Something like CONFIG::AGENT_ID,1234
  • If the app is compiled differently for different agents, you can also include an additional config file in the package which defines the id of the agent and attaches the user to it
  • If the install packages are static and it's not possible to recompile them to different agents, you can inject a file in the packages. Both the IPA and the APK are practically zip files, it's relatively easy to add a new file to the packages with a terminal command. Add a config.json file wherever it's needed, load it with your app and that's it.
  • If everything is static and it's not possible to create different packages for different agents, you can use Firebase to track conversion events using custom campaigns. This might not be that straightforward and it requires a little bit more effort, but in the end you can see who installed the app from what custom campaigns (assuming you give different campaigns and links to your different agents). It might also require even more effort to download this data from Firebase to your servers, but if your app generates some revenue it's worth it to subscribe to Google's BigQuery. (In our apps we're moving towards Firebase in every aspect, it's real good)
  • You can save a random generated ID on the device (SharedObject, EncryptedLocalStore), but each time the data is being wiped you lose the ID, so it's not bulletproof (this method is similar to a browser cookie, but more AIR friendly)

Although I'm not sure how your app works, how do you customize the apps so they're available to your agents and their users differently, but depending on those it shouldn't be that hard to "stamp" the users some way.

Maybe a little more detail would be more helpful.

natural_criticB837
Legend
December 20, 2017

At least for Apple this use if the Advertising ID would be against the policy. When you submit your app, you must confirm that you only use the ad ID for either showing ads, connecting ad ids to installs from previously shown advertisements or connect in app actions to previously shown advertisements. For any other uses you should contact the Apple developer support. I don't know for sure but I guess they would not allow your usecase and they would ban your app in case they find out, but again that's only an assumption.

Inspiring
December 20, 2017

Yikes!! I can't risk getting my app banned, it is going to pay my bills. I will have to find another solution. Someone else suggested that I might be able to create a temporary value in a cookie that I could use, and then on first run, my app could look up the cookie value in my database to associate the agents branding. I may look further into this as an option.

Sadly, I don't know much about cookies and don't know if stagewebview would have access to the cookies generated in safari, or perhaps to the localstorage used by safari. Please let me know if you know any information about this.

>