Changing test ads to real one - ios

I'm almost ready to publish my first app to the App Store. I use AdMob banners and reward videos. I used test ID for both all the time as it said on AdMob website. But now I'm not sure about few things and I can't find direct answers anywhere.
Before sending app for review I should change test IDs to my personal. As far as I understand I can't test my app with real IDs before sending, even if I won't be clicking any ads. So, can't I test it few times to make sure real ads work? And do I need to do this? Can I be sure if test ads work flawlessly real ads will work as well?
After my app is published, should I change IDs to test ones again to continue working on my app?
I also've seen an option to enable test devices, but I constantly using different simulators and real devices to make sure app looks right on all of them. And it just not too convenient to list all of them on every page.

If test ads were already shown successfully, I will only need to make sure you switch your TestAd IDs with your RealAd IDs correctly (No typos).
Please note that test ads operate through the same channels as live ads. Being able to return a test ad ensures that your application is communicating properly with our network.
Source: https://support.google.com/admob/answer/2993019?hl=en
And yes, I think you should switch back to TestAd IDs if you are reworking your app. Perhaps make a simple if/else statements to simplify the process of going back and forth between RealAd and TestAd.

Related

Force removal/invalidation of iOS app from user devices

Assuming you created an app that users have downloaded that is just awful and you neither want to fix it nor have anyone continue to use it so that it won't tarnish your brand, is there a way to end its life on user's iOS devices?
Curious if there is some store setting to force it to work with earlier versions of iOS and invalidates the current app, or code that would force an update that says the app is no longer available.
As many have confirmed, there is no way to remove an application from someone's device. For these cases though, many companies have servers that the application sends a request to on launch, that returns either a need to update the app, a message, or to tell the user the app has been discontinued and that the app cannot be used anymore, stopping them from using the app from there on.
The last use case might be useful to you, but of course this is a proactive solution, not a reactive one.

CloudKit storing and restoring data when testing, app is now released and users are losing their data

I am using Swift. I can show my code if need be but there is a lot and it may be confusing and unnecessary (if you want to see if please let me know).
So my game needs to save things like high scores and purchases. When I am testing my app with Xcode, high scores get saved and I can delete the app, reinstall, and it pulls from CloudKit successfully. I submitted the application to Apple and they too found that the CloudKit purchase tracking system was working and let it go through to the app store. I told a few friends about my app and wanted them to test it a bit. For some reason though whenever they delete and reinstall the app all their data is lost! It is not performing the same way it does for me on Xcode (or for Apple for that matter).
The really annoying thing is that it takes 3-5 days for any updates I write to make it to the update and I can't even identify the problem yet because here on Xcode it works perfectly.
Does anyone know where the problem might lie? Where I might look in my code or places I could check?
Thanks!
Edit 1: Also a kind of follow up: A friend of mine is abroad and is always on airplane mode. When I check the CKContainerID on airplane mode when testing it finds the user perfectly. For him, however, it thinks that no user is signed in.
Why is all this different in production??
Edit 2: I'm finding some things regarding production cloudkit and development cloudkit? I am totally unfamiliar with this. Secondly I haven't messed around with the CloudKit Dashboard. My code basically tries to pull from the user's CloudKit and if it can't find those records then it will use the saveRecord function to create it.
Edit 3: Have just looked at this tutorial: https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CloudKitQuickStart/DeployingYourCloudKitApp/DeployingYourCloudKitApp.html#//apple_ref/doc/uid/TP40014987-CH10 and when I have followed those steps to deploy schema I see that the "changes to record types" lists every record I have. Does this mean that there currently are no records for production meaning no one can save anything? Do I just need to follow all these steps to deploy to development and I'm okay? I'm not too sure what this does so I am hesitant to do so.
Figured it out! Refer to my 3rd edit. Basically my data holders were all in the development cloud thus when users tried to save/pull their data there wasn't anything in the production cloud for them to save to/pull from. By following that little Apple tutorial and essentially pushing my schema from development to production my users were able to store their data about 10 minutes afterwords!

My Own Impressions on AdMob?

I successfully made an app and its waiting for review right now. But meanwhile i've been playing the game on my mom's phone because, one, i dont have an iphone and its for iphone, and two, I actually like playing it. But I looked at my admob because i wanted to make sure i wasnt messing with it by playing my own app but it turns out i have 100 impressions! D: No clicks though, and i know im not supposed to click on my own ads. What do the impressions do? what are they? Am I going to get in trouble? I stopped playing the game now.
btw my moms iphone no longer has my developer Apple ID signed in on it, but it can still play the app and the UDID is still registered with the developer account if that matters.
Nothing to worry about.
Impressions are when an ad is displayed.
Requests are when an ad is requested.
Clicks is when you clicked on an ad (you haven't done that so nothing to worry about).
It's probably a good idea to add some quick code that differentiates between you and every other user. "If username == 'MobileGamer', don't display ads", or something similar. Just to be safe.
For example, I have several websites where both the ads and the stats-tracking code is omitted if I'm the logged-in user. That way, Google can't claim that I'm trying to steal money from them when I'm using my own website (they've tried before), and my user stats aren't skewed by huge activity spikes whenever I'm adding features or testing.
I haven't used AdMob specifically, but ad companies are famously strict with this sort of thing. I was once kicked from an advertising plan simply because my roommate, who was on the same network as me, clicked on an ad no my website once.
Better not to risk it. Just don't show the ads at all, for you or your testers.

GameCenter Challenges do not work in Sandbox?

We have been trying to integrate GameCenter challenges into our latest release. Everything else works just fine in the Sandbox, however, Challenges do not.
When we submit a challenge, the delegate returns that it was not sent and nothing shows up in the native GameCenter view controller.
Does anyone know if this is expected? How should we test Challenge code if not in the sandbox?
Extra Credit Has anyone seen documentation that is actually current on Challenges? Everything we have seen references old deprecated functions.
They can work in the sandbox, but my experience is that you need two iOS devices (not the simulator) both logged in to separate GC accounts when testing them. Do this and you will see the challenges appear fairly quickly, otherwise it's a bit random whether they will turn up at all.

Determine whether an app launch came from an AdMob click

I'm trying to figure out whether the users I get from ads will buy in-app purchases frequently enough to justify the cost.
Is there any way an iOS app can tell whether the user has clicked on an AdMob ad in the past? Their Download API only seems to show aggregate data. I'm open to using any other network if they let me do this!
If there's anything in the HTTP request from an ad which would give me the user's magical ISU string, I'd be happy to bounce ads through my own server and implement my own tracking.
Thanks!
AdMob doesn't have any way of querying for this.
I decided to bounce ads through my own server and have the app query it later. If the server finds an ad click which came from the:
Same IP address
Same Device type
Same system version
it will tell the app that it came from a paid click.
Of course the problem with this is that I lose data on some unknown number of ad-click installations. I'd like to know how many I'm losing, but I don't know if there's a way to use AdMob's app conversion tracking together with ads which go to arbitrary URLs.

Resources