Key takeaways
- Pick by how your game stores currency: with your own backend, a web wall or an SDK with server callbacks both work; without one, a provider-managed currency is simpler.
- A web-based wall needs no plugin and changes without a new build, while a native SDK gives an in-game look at the cost of build requirements and updates.
- Credit currency only from signed server-to-server callbacks, keyed by transaction ID, and keep the wall optional to stay within store rules.
Which offerwall SDK is best for a Unity game?
The best offerwall SDK for a Unity game is the one that fits how your game stores currency. If your game has its own backend, both a native SDK with server-to-server callbacks and a web-based offerwall opened from a signed link work well, and the web option needs no plugin at all. If your game has no backend, an SDK that keeps the currency balance on the provider’s servers is the simpler start. Within those groups, compare offer coverage for your players’ countries, how reversals are reported, and the build requirements each SDK adds.
Common options for Unity, according to each provider’s documentation as of October 2026:
- Native SDKs with a Unity plugin: Unity Offerwall (formerly Tapjoy), AdGem’s Unity SDK, and BitLabs’ Unity SDK.
- Without an SDK: RevU, which describes an iframe, a hosted page, and a whitelabeled API across Unity, iOS, Android, and web, and Sharklio, which opens from a signed link. MyChips offers both an SDK and iframe or direct link options.
This is a guide to choosing. For step-by-step code, see How to add an offerwall to a Unity game.
Native SDK vs web-based offerwall in Unity
An SDK is a library you import into the project. A web-based wall is a page your game opens. What is an SDK? covers the general trade-off; here is how it plays out in Unity:
| Native SDK | Web-based wall | |
|---|---|---|
| Setup in Unity | Import a package, add keys, initialize at startup | One endpoint on your server and one button |
| Look and feel | Native overlay inside the game | Browser or WebView, styled by the provider |
| Build requirements | Native dependencies and minimum tool versions, such as Xcode and CocoaPods | None beyond a WebView plugin if you want one |
| Updates | New SDK versions mean a new build | Changes ship on the provider’s side |
| Unity Web builds | Android and iOS SDKs do not apply | Works, the wall opens in a new tab |
| Running several walls | Each adds another SDK | Each is another link |
Build requirements are real work. Unity’s own Offerwall quickstart for Unity, for example, has you import a .unitypackage, enter separate Android and iOS SDK keys, add a component to your first scene, and wait for a successful connect before requesting content, and it lists minimum Xcode and CocoaPods versions for recent SDK releases.
Your options for showing a web wall from Unity
Unity’s Application.OpenURL hands a link to the operating system, which opens it in the default browser. On Web builds, Unity’s docs say it opens the URL in a new browser tab. Unity does not document a built-in in-game WebView for Android and iOS, so showing the wall inside the game usually means a third-party WebView plugin. Your three choices:
- System browser with OpenURL. One line, every offer behaves as on the web, but the player leaves the game for a while.
- In-app browser tab through a plugin, such as Custom Tabs on Android or SFSafariViewController on iOS. The player stays closer to the game and the browser still handles store links.
- Full WebView plugin. The wall sits inside your own UI. Test JavaScript, file uploads, store links that must leave the view, and a visible close button.
Whichever you choose, Unity’s docs warn against passing a string from an untrusted source to OpenURL. Fetch the link from your own server and check that it starts with the provider’s domain before you open it.
The rewarded currency flow: credit on the server
Unity Offerwall’s documentation describes the two models every provider uses in some form. With provider-managed currency, balances live on the provider’s servers and you need no backend. With self-managed currency, balances live on your servers and the provider calls a callback URL you supply. Unity recommends self-managed currency as best practice for its extra features, notes that only self-managed supports several currencies in one app, and says you cannot migrate back to managed currency later. Decide before launch.
If you run your own backend, the safe flow looks like this:
- The player taps Earn, and the client asks your server for a link or an SDK session for that player ID.
- The player completes an offer. The provider sends a signed server-to-server callback to your server.
- Your server checks the signature, skips any transaction ID it has already processed, and adds the currency.
- On a reversal callback, your server removes the currency or marks the debt.
- The game reads the balance from your server the next time it syncs.
Never add currency because the client says an offer finished. A modified client can say anything. Server-to-server tracking explains why the callback is the only trustworthy signal.
What to compare between offerwall providers
| Question | Why it matters |
|---|---|
| SDK, link, or both? | Decides build work and whether your Web build can use it |
| Managed or self-managed currency? | Decides whether you need a backend and who owns the balance |
| Signed callbacks with reversals? | Protects your economy from fake and reversed rewards |
| Offers for your players’ countries? | A wall with few offers in your top markets earns little |
| Can players see pending rewards? | Cuts “where are my gems” tickets |
| Payout terms in writing? | Schedule, minimum, and how reversals are deducted |
Illustrative example: what a wall adds per daily user
A Unity game has 10,000 daily active users. 5% open the offerwall each day, so 500 players, and 12% of them complete an offer: 60 completions a day. At $0.80 per completion to the developer, that is $48 a day, about $1,440 over 30 days, or $0.0048 per daily active user. The numbers are made up to show the formula; your own depend on placement, countries, and the rewards you offer.
Set the gem price of offers with the virtual currency calculator, and see Offerwall vs rewarded video if you are deciding between the two formats.
Keep the wall optional
Apple’s App Review Guidelines, in section 3.2.2(x), say apps must not force users to rate or review the app, download other apps, or take other store-related actions to access functionality, content, or use of the app, while they may incentivize specific actions within apps, such as completing a level or watching an ad. Never gate core gameplay behind offers, and never reward ratings or reviews. Monetize a mobile game with an offerwall covers placement and store policies in more detail.
A Unity offerwall without an SDK
Sharklio opens from a signed link that your server creates for each player, so it works with Application.OpenURL or any WebView plugin, and on Web builds too. Players earn your own currency with your name, icon, exchange rate, and user split, and offers are matched to each player’s country and device. Every credit, reversal, and rejection reaches your backend as a signed postback with automatic retries. Our Unity guide has the C# code, and you can apply from the publishers page.
Frequently asked questions
Do I need an SDK to add an offerwall to a Unity game?
No. Several offerwalls open from a link that your game shows with Application.OpenURL or a WebView plugin. An SDK gives a native overlay but adds build work and updates.
Is Tapjoy still available for Unity?
Yes. Unity documents it as Unity Offerwall, formerly Tapjoy, with Android, iOS, and Unity SDKs, and publishes a migration guide from the ironSource Offerwall.
Should currency be managed by the provider or by my server?
If you have a backend, keep balances on your server and credit them from signed callbacks. Provider-managed currency is simpler without a backend, but it gives you less control.
Can I use an offerwall in a Unity WebGL game?
Native Android and iOS SDKs do not run in a Web build, but a web-based wall does. Unity’s docs say Application.OpenURL opens the link in a new browser tab on Web builds.