I'm trying to implement a screen where the player plays 3 videos and gets a reward. I've created a zone in AdColony and the first ad (of the session) works ok The second one doesn't work for the remaining of the session(Remained for about 1 minute in the app).
Is there any method I can call to load the next video in the same zone or does it load automatically after a while?
I use the following code to check if there are any videos to play:
if ([AdColony zoneStatusForZone:#"zone_id"] == ADCOLONY_ZONE_STATUS_ACTIVE)
{
[AdColony playVideoAdForZone:#"zone_id" withDelegate:self];
}
If I close the app after each play and get back into it, it has an ad more often.
What you are seeing is related to fill availability, as there will not always be 3 videos ready to play in succession. Additionally, we recommend against using multiple videos for rewards, especially if a user must view them in succession, as we have found this to cause frustration among app users.
We recommend adjusting your reward to be appropriate for viewing a single video. However, if you do still want to use multiple video views; an AdColony admin can set this in our admin settings so that the views do not have to be consecutive. To use this option you will need to work with our Support Team at support#adcolony.com.
Related
We currently have an app on the app store that's been up for months now. Every release we've pushed has been approved just fine. The last vesion we tried to push we changed one thing and it was rejected and I am trying to figure out why. I know it has to do with augmented reality (which has also been in the app since the first release).
Here is what changed and our issue getting it approved.
The app was created with Unity3d. in previous releases you entered a login screen, logged in and were taken to a content selection screen in which the user selected which content they wanted to download and view. It then downloads the content. Everything here is fine. What changed was we noticed the analytics we were using for capturing how long the user was in the app was being reset because the permissions window that pops up when an AR scene is in use the first time calls OnApplicationPause. Our Analytics has an OnApplicationPause where if the user has the app paused (or just running in the background) it will end the current session and restart when the user brings back the app into focus. Because of this that popup messes with sessions. So we moved a check to determine if permissions were granted to the front of the app before they get to that content screen.
Because of this change Google has rejected the app pointing to the below policy:
Special restrictions:
If your app uses Augmented Reality, you must include a safety warning immediately upon launch of the AR section. The warning should contain the following:
An appropriate message about the importance of parental supervision.
A reminder to be aware of physical hazards in the real world (e.g., be aware of your surroundings).
So they are getting the same warning message about camera usage that they are then agreeing to its just not happening right when the AR camera is in use.
Can we just add our own message here? Does it have to be the permissions message in that scene only? I am not understanding if they are already aggreeing to those permssions why they would reject the app just because it isnt being displayed in that specific scene.
What is the best way to go about this?
I am working on a Unity game that needs to be monetized with Heyzap SDK. I integrated the latest SDK that had some issues earlier and its fixed.
Now I want to know whats the best possible way to preload or cache interstitial and reward ads before calling Show method.
In doc, it says, Fetch right after initializing Heyzap SDK.
What if I have 3 different placements in game ? ie, three different tagID's.
I know that I can make use of HZInterstitialAd.Fetch("tagID1") and so on...
I just want to know that I am doing it in the right way....
So these are my questions.....
1) I am calling HeyzapAds.Start("xxxxxxx") in Awake() of one of my cs scripts. Is Awake() the right function to initialize Heyzap SDK ?
2) Can I call Fetch method subsequently like below. Because I want all these 3 ads with different tagids to be preloaded or cached. Will it cause any network bottleneck because of the subsequent web service calls ? Is it safe to load Ads like this ?
HZInterstitialAd.Fetch(tag1)
HZInterstitialAd.Fetch(tag2)
HZInterstitialAd.Fetch(tag3)
3) In my game, as soon as the user launch the app or when user hard close ( remove from memory ) and launch the app again, I have to show an Ad ( bootup ad ). To achieve this, I used the below code, but it's not working. Could you let me know how to show bootup Ad or show an AD right after initializing Heyzap SDK.
Is there any delegate available to check if the SDK initialized before I attempt to call Show method or Should I rely on Fetch and its respective interstitial or incentivized delegates ?.
HZInterstitialAd.Fetch(tag1)
HZInterstitialAd.Fetch(tag2)
HZInterstitialAd.Fetch(tag3)
HZInterstitialAd.ShowWithOptions(option);
I also tried calling from Android's Activity's Resume and Start to Unity's function that trigger Heyzap interstitial Ad. But its not working either.
Note: If I attempt to call Show after a small pause say 1 or 2 seconds, all calls are working. It seems that calling Show right after initialization is not working. It needs some time to search and Fetch Ads from available networks ?. So whats the recommended approach to show BOOTUP Ad ?
There are two decisions to make timers, with "update:" and with actions.
But i need a timer that could continue even if the player close the game.
So when player comes back to game after a certain time, his progress could be saved. Could i use CFAbsoluteTime to make this?
You should look at the Date/Time instead of in-app timers for this purpose.
Essentially, you need to track the time passed between launches of the app. You can do this via storing the Date in the user defaults when the app is closed, and comparing it to the current Date when the app is openened the next time to figure out how much time has passed.
You may want to look at using an external clock, like grabbing the time from a website, this will prevent people from simply changing there clocks to alter time. (This will not however prevent people from altering the DNS to go to there own web servers, but will most people go through that trouble for a simple game)
I have an application that runs in the background, I need it to pseudo randomly take a picture using the forward facing camera and send that to a database.
A possible solution I thought of was to use URL schemes to open another application, which will take the picture and send it, then use another URL scheme to open the background application back up. Does anyone know if this is possible?
Or perhaps there is a better solution.
It is not possible for an iOS application in the background to initialize, utilize, or grab photos from the camera hardware, let alone store or upload them to a local database.
Not only is this a security risk, but it poses a potential privacy invasion, and is just plain creepy. Besides, background apps only stay alive for 10 minutes or so, so even if this activity were possible, sustaining it would be impossible.
However, it is possible to use the camera directly from an active app without having to delegate the task to another application (perhaps you are thinking a little too much like an Android developer :p). Take a look at UIImagePickerController.
There's a very limited set of actions background applications can do—GPS, audio, phone & VOIP calls, and a couple of others. Accessing the camera is not one of those allowed actions, so you can't take a picture in the background.
As an alternative, you could set up a notification system to alert the user that it's time to take a picture (for whatever reason), and if they choose to open the app it could do your required actions then.
Is it possible to have an App (running iOS4 on hardware supporting multi-tasking) which starts on iPhone startup and then regularly checks for online updates (every 15 minutes) and then refresh the badge, so the user can see how many unread items there are with-out having a push-server?
I was hoping this would be possible with iOS4 Programming Guide seems to suggest it is only possible to to this regarding Locations tracking, VoIP and playing background audio. There is also the possibility to do local-push notifications, but I don't see to find how to trigger a specific function that way.
Thanks in advance for any help!
edit:
Just having read a bit more, if the application is in the background/inactive state, and I son want to update the badge-number without displaying a message, is there an action triggered like didReceiveLocalNotification? There must be a way to schedule something on a regular basis (like email checking) without having to implement a full server-push-nitification system!
Is it possible to have an App ... which starts on iPhone startup and then regularly checks for online updates (every 15 minutes) and then refresh the badge
As you already figured out, the answer is no.