- User Guide
- Supported Services
- Supported Platforms
- Getting Started
- Code Examples
- Signing Your App
- Enhance Process API
- Continuous Integration
Can I try an Enhanced app before I Enhance mine?
We have lots of games in the Google Play and iTunes store that are already using Enhance to serve ads and other services in their games.
Vector Unit's Beach Buggy Racing on Android and iOS is a great example of one.
Is Enhance an ad mediation network?
Enhance offers ad mediation as a feature, but is not an ad mediation network. Enhance offers SDKs that have nothing to do with ads; crash reporting, analytics, user experience Enhancements and more. Of course, ads are an important offering for many SDKs, so naturally it’s important for Enhance to support easy ad network mediation! You can set up your own mediation with the "Set Up My Own Mediation" option. If you use an external mediation network SDK such as Appodeal or AdMob Mediation, mediation of ads will be handled by that.
Why am I not seeing any ads display?
This is most likely simply an issue of being unable to get ad fill for that particular SDK at that particular time at your location. Unfortunately there is no way to guarantee fill from any particular ad network. If the netwrok you are trying to implement offers a test code that guarantees fill (AdMob being an example of an SDK that does so), you could try providing that during the Enhance process. Another possible problem is SDK conflicts; Enhance works best if you remove as many SDK implementations as you can from your app to avoid any conflicts, especially if you have an old integration of the SDK you are trying to use Enhance to implement; it's best to remove those and let Enhance do its work "from scratch"! As always, if you have trouble, feel free to contact us!
Can I control the maturity rating of the ads shown?
Some ad networks allow this. You will have to go into each ad network account you create and adjust these settings. We recommend you set all maturity/content ratings to "medium" when going this route.
I need a "keystore" to "sign" my Android application. What is a keystore and signing?
In order for your Android application to be accepted to the Google Play store it must be signed with a keystore that you create. A "keystore" is simply a file that contains information about the creator of the application, usually containing the developers name, company name, etc. You will also be asked to create a password to protect this information. "Signing" is the process where you link the keystore to your Android application so it can be associated with the information inside of it. The Google Play store will only accept applications with a keystore linked so it can identify who the application belongs to; this is important because it stops third parties from hijacking your app on the storefront if they somehow gain access to your Google account (Google will not allow any update to your app to be published unless it is signed with the same keystore that signed the originally published version).
Check out the section of the docs explaining how you can create a keystore file and sign your Android application with it by clicking here.
I have Enhanced my Android application but the Google Play Store keeps rejecting it.
Make sure have properly signed your application with the correct keystore before you try to publish it. Enhance can do this for you if you upload your keystore during the Enhance process. If you do so, make sure it is the same certificate (keystore file) that was used to sign the version of your app that is currently on Google Play; you cannot update an app that is signed with a different keystore to the one that was originally used when publishing for the first time.
Certificate, Provisioning Profile, App ID, its all very confusing. What are they and why do I need them to create my iOS app?
Keep in mind before you can even use a certificate, app id or provisioning file you must be signed up for the Apple Developer Program. So make sure to do this before getting started with iOS development.
Every time an app starts up, the app is checked to make sure it was signed by Apple and that you have permission to run it. In order to run apps on any of Apple's devices you need a special file called a Certificate. In order to obtain this Apple sanctioned file you need to create a "Certificate Signing Request (CSR)" using the Keychain Access app (you can only do this on a computer running MacOS). After creating that file you install this file into your keychain by double clicking it, allowing XCode to use it to sign your app (and later, once you have exported a P12 file of this certificate from Keychain Access, Enhance can use it too). This is basically saying that Apple now trusts who you are and will let you create apps for their platforms.
If certificates are telling Apple who you are and that it's okay for you to upload apps you have created, then what is the point of a Provisioning Profile? Unless your app came from the App Store (i.e has been checked by Apple before it is put up), an iOS device does not know to trust it, and thus will not allow it to run. A provisioning profile contains a list of limited iOS device IDs that should be allowed to run your app without them having originated from the App Store. It also contains a reference to the certificate used to sign the app, as a way of proving that Apple has sanctioned this action. You will download this file from the Provisioning section within Apple's developer portal, you will use this file during the build process of your app.
When you create a provisioning file you will need to create an App ID which is a unique identifier for your app. It is created from the "Team ID" which is a unique string created by Apple plus the "Bundle ID" which is created by you the developer.
The App ID will be used as a way to identify your app along with the provisioning profile so the device knows that Apple has marked you as a trusted developer.
So to sum it all up certificates are created so Apple can trust you as a developer, provisioning files are created so that the iOS device you are running the app on allows the app to run without being published first, and finally the App ID is a unique identifier used by the provisioning profile to specify which app it pertains to.
Make sure to check out the docs to learn more about how to sign your iOS app for Enhancement. To get started, click here.
I have Enhanced my iOS application with the wrong certificate.
Make sure that when exporting your P12 from Keychain Access, you click the disclosure triangle to the left of the certificate and export the private key (as below). For more information, check out the iOS (Objective-C) signing instructions on our Signing your app page.
How does Enhance make money?
We have deals with the service providers so that we make money when apps implement their services through Enhance. This is a win all around as developers and publishers are not charged to use Enhance and service providers get a chance to have their services implemented easily.
How can I make money with mobile apps using Enhance?
Enhance makes it easy to find and implement all different types of services and their SDKs. Some of these services allow you to directly make money such as ads, surveys, and rewards. Other services allow you to indirectly make money by improving your app and allowing you to track and market your app better such as analytics, attribution, and push notifications.
Enhance itself doesn't make you money, but the services you implement and manage with Enhance do. Ultimately it is up to you to decide which services you want to try and how you'd like to use them within your app.
When you start the Enhance process you'll see the wide variety of services that can help improve your app and its ability to monetize. We also encourage you to check out our forums and blog to see how other developers and publishers are making money with Enhance.
How does SKU mapping work?
In-App Purchases allow users of your app to purchase goods or services from within your app, for example extra in-game currency, bonus features or ad removal. When you add In-App Purchases to your app, it must be given a name to identify it - this is known as the "SKU ID". This is created via the platform's admin panel - for example on your Google Play Console.
To make it easy to develop cross-platform apps, Enhance uses a mapping system to refer to these SKU IDs. In the Drag and Drop Library, you will refer to a "Reference" rather than the SKU ID itself. This allows you to update your SKU IDs for each platform on the Enhance site without any future code changes - the reference used in the Drag and Drop Library calls stays the same, and the SKU ID is set when Enhancing on the website. When you deal with a user purchase in your app's logic, you simply pass the reference name and Enhance will map it to the SKU ID associated with it.
To illustrate this, let's say we have an app that will be published to Google Play and the Apple App Store. On Google Play, we have an SKU defined as "sku_ads_remove", and on the Apple App Store it is "ads.remove". Within our app code we'd normally have to have some logic to set the appropriate SKU ID based on the platform - instead, we pass "remove_ads" to the Drag and Drop Library call, then when Enhancing the Google Play version of our app we set the reference "remove_ads" against the SKU ID "sku_ads_remove" (and set up the relevant reference when Enhancing for iOS).
Below is an example of where you would define the "SKU ID" in the Google Play admin panel The "Product ID", is the "SKU ID" that you will create a "Reference Name" for.
During the Enhance process this is where you fill create the "Reference Name" that maps to the "Product ID" you created in the Google Play admin panel.
For more information on how to integrate In-App purchases and related services into your app click here.
I have problems with crashes when I launch my app. Why?
If you have already implemented an SDK we support there is a chance that an existing implementation will conflict with Enhance's implementation of the same SDK, possibly causing errors or result in your app crashing.
Before using Enhance it is advised to remove any code implementing an SDK we support, and making sure that if you have an SDK in your app that uses Google Game Services (e.g MilkMan's Adobe AIR extensions), it is fully up to date. If you continue to have issues, please contact us.
My app upload failed, saying "The package name belongs to a non-Enhance game or another user". Why?
Make sure you haven't already previously uploaded the app with another Enhance account. Always be sure to log in with the original account that you uploaded an app with. If you are sure you are using the correct account, you might need to change the package name of your app, as another user is using it.
My app upload failed, saying "Drag and Drop Library not found". Why?
If you have chosen to use an SDK that is not ZeroCode, then you will need to add the Enhance Drag and Drop library for your development platform.
No matches were found…