Long post, apologies in advance, complicated topic, also thanks in advance to any who take the time to read/consider it…
Does anyone have anything approaching an “authoritative” list of which ad networks do/do not require this permission? I mean REALLY require it, or REALLY can’t have it. Some clearly document one way or the other, many do not.
It seems quite a bit of a mess to me, and makes it far more difficult to implement an in-app mediation strategy across various networks (assuming that not all desired networks are yet supported as part of the ads library itself, which is frequently the case)
I do understand (fe, see docs on system.getInfo(“deviceID”)) why some networks might prefer to get the same AndroidID (without READ_PHONE_STATE) across all devices for tracking purposes.
Most common case for NOT having the permission seems when the ad network offers per-install (or other per-action) offers that need to be able to later cross-reference the installed-apps analytics - that say “I just ran for the first time on device XXYYZZ”, where XXYYZZ is that same AndroidID sent along with your affiliateID (aka appID) sent during the impression/click. Got it.
Less commonly needed if the ad network is just per-impression, in which case all they really need is your affiliateID (aka appID).
So, back to that wish for an “authoritative list”…
The entire ads library is documented as requiring this permission. So (presumably) for any ad network accessed through the ads library the answer must also be “YES, it’s needed”. (and perhaps other permissions, as specific to that provider - like inmobi, who seems to require every permission imaginable - but I’m not concerned about those here)
RevMob ?apparently? ?doesn’t? need it, but their docs are very sketchy. Their “Corona Sample” at GitHub doesn’t include it, but nor does it even require INTERNET, so it won’t even work AT ALL as written - can’t learn anything from that. Their “Sample With Storyboard” at least includes INTERNET permission, so will run as written and delivers ads, but does NOT include READ_PHONE_STATE, so who knows if that sample would actually properly track impressions so that you GET PAID? Their native-java Android sample DOES include READ_PHONE_STATE. What a hodge-podge.
Chartboost, at least, very clearly indicates that they MUST NOT have that permission set - they REQUIRE it not set so that AndroidID can be obtained. (so, Chartboost is one of those tricky ones to integrate with other providers that DO require the permission)
Vungle’s native Android API is documented as NOT requiring READ_PHONE_STATE (which makes sense since it’s a per-impression type network). But in Corona, it’s implemented via the ads library which is documented as DOES require the permission. So, the library requires it, but the plugin does not? wtf? What’s the true answer here? (ref: item 2 here: https://v.vungle.com/dev/android#title5)
AdMob’s native Android API is same situation as Vungle - The API itself is documented as NOT requiring the permission, yet implemented through ads library which DOES, so what’s the real deal?? (ref item 4 here: https://developers.google.com/mobile-ads-sdk/docs/)
And so, similarly, for other plugins – anyone have actual real-world implemented/tested evidence one way or the other for each? That is, you’ve implemented it, deployed it, and have evidence of getting paid/failing to get paid with/out the permission?
Wow, I’ve rambled on long enough, thanks for listening, and HUGE THANKS IN ADVANCE for any assistance documenting this further.