Integrating GemiWall SDK: A Step-by-Step Technical Guide
Get your offerwall up and running in under 5 minutes. Complete technical documentation with code examples for iOS, Android, and Unity integration.
Emma Watson
Developer Relations Lead
Integrating GemiWall SDK: A Step-by-Step Technical Guide
Get GemiWall integrated into your app quickly with this comprehensive technical guide.
Prerequisites
- Active GemiAd publisher account
- API credentials (App ID and Secret Key)
- Minimum SDK requirements:
- Android: API 21+
- Unity: 2019.4+
Installation
iOS (CocoaPods)
Add to Podfile
pod 'GemiWallSDK', '~> 2.0'
Install
pod install
Android (Gradle)
// Add to build.gradle (app level)
dependencies {
implementation 'com.gemiad:gemiwall:2.0.0'
}
Unity
- Download Unity package from dashboard
- Import into Unity project
- Configure settings in GemiWall prefab
Basic Configuration
iOS (Swift)
import GemiWallSDK
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
GemiWall.configure(
appId: "YOUR_APP_ID",
secretKey: "YOUR_SECRET_KEY"
)
return true
}
Android (Kotlin)
import com.gemiad.gemiwall.GemiWall
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
GemiWall.configure(
context = this,
appId = "YOUR_APP_ID",
secretKey = "YOUR_SECRET_KEY"
)
}
}
Displaying the Offerwall
iOS
GemiWall.show(
from: viewController,
userId: "user123",
completion: { result in
switch result {
case .success:
print("Offerwall displayed")
case .failure(let error):
print("Error: \(error)")
}
}
)
Android
GemiWall.show(
activity = this,
userId = "user123",
listener = object : GemiWallListener {
override fun onShow() {
Log.d("GemiWall", "Displayed")
}
override fun onError(error: GemiWallError) {
Log.e("GemiWall", "Error: $error")
}
}
)
Reward Callbacks
Server-to-Server (Recommended)
Set up a webhook endpoint to receive reward notifications:
{
"user_id": "user123",
"offer_id": "offer456",
"reward_amount": 100,
"currency": "coins",
"timestamp": 1640000000,
"signature": "abc123..."
}
Client-Side
GemiWall.setRewardListener { reward in
print("User earned: \(reward.amount) \(reward.currency)")
// Credit user account
}
Advanced Features
Custom Styling
let config = GemiWallConfig()
config.primaryColor = UIColor.purple
config.accentColor = UIColor.pink
config.navigationBarStyle = .dark
GemiWall.setConfig(config)
Analytics Events
GemiWall.setAnalyticsListener(object : AnalyticsListener {
override fun onOfferClick(offerId: String) {
// Track offer engagement
}
override fun onOfferComplete(offerId: String) {
// Track conversions
}
})
Testing
- Use test mode during development:
GemiWall.setTestMode(true)
- Verify test rewards appear in dashboard
- Test all flows before production release
Best Practices
✅ Implement S2S callbacks for reward verification
✅ Handle errors gracefully
✅ Cache user data appropriately
✅ Test thoroughly before launch
✅ Monitor SDK performance
Troubleshooting
Common Issues
Offerwall not showing:
- Verify API credentials
- Check network connectivity
- Ensure user ID is set
Rewards not credited:
- Confirm S2S webhook is configured
- Validate signature verification
- Check server logs
Support
Need help? Our developer support team is here:
- Documentation: docs.gemiad.com
- Email: [email protected]
- Discord: discord.gg/gemiad
Start monetizing in minutes with GemiWall!
Tagged in:
About the Author
Emma Watson
Developer Relations Lead
Emma Watson is a thought leader in the mobile advertising industry, helping businesses maximize their performance through innovative strategies and data-driven insights. With years of experience in AdTech, Emma shares actionable tips and industry expertise.