{"_id":"5657759b4d1c720d001f522a","__v":26,"user":"55c0fde70709c50d003990d7","category":{"_id":"5657759a4d1c720d001f5228","version":"5657759a4d1c720d001f5227","pages":["5657759b4d1c720d001f522a","56be0f1f37d84017009de5e6","56be0f325baf530d0051a87d"],"project":"565775994d1c720d001f5224","__v":3,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-11-26T21:11:54.842Z","from_sync":false,"order":1,"slug":"documentation","title":"Documentation"},"version":{"_id":"5657759a4d1c720d001f5227","__v":4,"project":"565775994d1c720d001f5224","createdAt":"2015-11-26T21:11:54.292Z","releaseDate":"2015-11-26T21:11:54.292Z","categories":["5657759a4d1c720d001f5228","565e2251413e06170093dcd8","565e261c413e06170093dcdd","565e27068f048c2100442a2c"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"project":"565775994d1c720d001f5224","updates":["5791ec2446b16f1700a37bc6"],"next":{"pages":[],"description":""},"createdAt":"2015-11-26T21:11:55.609Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"Hi there! This is a step-by-step tutorial on how to manually integrate Tapcore's SDK in your app in under 3 minutes. Have questions? Contact us: [support:::at:::tapcore.com](mailto:support@tapcore.com) \n[block:embed]\n{\n  \"html\": \"<iframe class=\\\"embedly-embed\\\" src=\\\"//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FNm22_Eb_jqQ%3Ffeature%3Doembed&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DNm22_Eb_jqQ&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FNm22_Eb_jqQ%2Fhqdefault.jpg&key=f2aa6fc3595946d0afc3d76cbbd25dc3&type=text%2Fhtml&schema=youtube\\\" width=\\\"854\\\" height=\\\"480\\\" scrolling=\\\"no\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\",\n  \"url\": \"https://www.youtube.com/watch?v=Nm22_Eb_jqQ\",\n  \"title\": \"Tapcore Android SDK Integration (Manual)\",\n  \"favicon\": \"https://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico\",\n  \"image\": \"https://i.ytimg.com/vi/Nm22_Eb_jqQ/hqdefault.jpg\"\n}\n[/block]\nIntegrating Tapcore SDK in your app consists of several simple steps. Let's dive right in!\n\nFirst, go to [Dashboard > Apps](http://my.tapcore.com/apps), add your app(s), and press *Integrate*. You'll be presented with 2 options – manual & automatic integration.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"0. Generate and download your SDK\"\n}\n[/block]\n## 1. Manual integration\n\nThis option is less popular but its advantages are:\n- you can integrate Tapcore SDK while manually building your .apk\n- you can configure ProGuard\n\n## 2. Automatic integration\n\nMost of our users choose this option – Tapcore automatically wraps SDK in your app, you just have to download the final build and update it on Google Play. \n\n[Learn to automatically integrate Tapcore SDK](https://tapcore-documentation.readme.io/docs/sdk-integration-automatic).\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Manual Integration\"\n}\n[/block]\nPut library *tapcore-iv-8-1.13.jar* into libs directory of your project. Add it to a buildpath of\nproject. Next, integrate these advanced libraries:\n  * [GooglePlayServices](https://developers.google.com/android/guides/setup)\n  * [android-support-appcompat-v7](https://developer.android.com/intl/ru/tools/support-library/features.html#v7)\n  * [android-support-v4](https://developer.android.com/intl/ru/tools/support-library/features.html#v4)\n\nManifest will require these components:\n- 24 activities\n- 3 receivers\n- 3 services\n- 1 meta\n\nYou'll also need to add these permissions to your manifest (do not duplicate any permissions (we\nsupport Android API 10+)):\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<uses-permission android:name=\\\"android.permission.INTERNET\\\" />\\n<uses-permission android:name=\\\"android.permission.ACCESS_NETWORK_STATE\\\" />\\n<uses-permission android:name=\\\"android.permission.WRITE_EXTERNAL_STORAGE\\\" />\\n<uses-permission android:name=\\\"android.permission.ACCESS_WIFI_STATE\\\" />\\n<uses-permission android:name=\\\"android.permission.ACCESS_COARSE_LOCATION\\\" />\\n<uses-permission android:name=\\\"android.permission.SYSTEM_ALERT_WINDOW\\\"\\n\\tandroid:maxSdkVersion=\\\"18\\\" />\\n<uses-permission android:name=\\\"android.permission.READ_PHONE_STATE\\\" />\\n<uses-permission android:name=\\\"com.google.android.gms.permission.ACTIVITY_RECOGNITION\\\" />\\n<uses-permission android:name=\\\"android.permission.ACCESS_FINE_LOCATION\\\" />\\n<uses-permission android:name=\\\"com.google.android.providers.gsf.permission.READ_GSERVICES\\\" />\\n<uses-permission android:name=\\\"android.permission.GET_TASKS\\\"\\n\\tandroid:maxSdkVersion=\\\"20\\\" />\\n<uses-permission android:name=\\\"android.permission.WAKE_LOCK\\\" />\\n<uses-permission android:name=\\\"android.permission.BROADCAST_STICKY\\\" />\\n<uses-permission android:name=\\\"com.google.android.c2dm.permission.RECEIVE\\\" />\\n<permission\\n            android:name=\\\"<your_package_name>.permission.C2D_MESSAGE\\\"\\n            android:protectionLevel=\\\"signature\\\" />\\n<uses-permission android:name=\\\"<your_package_name>.permission.C2D_MESSAGE\\\" />\",\n      \"language\": \"xml\",\n      \"name\": \"Add new activities, receivers and services\"\n    }\n  ]\n}\n[/block]\n\n**Required Permissions**\nInternet – required parameter. Our SDK is unable to display ads without it.\nAccess_wifi_state – required parameter. Our SDK will not be able to optimize traffic on complex connections via Wi-Fi (e.g. in case of an access point has a mobile Internet) and perform certain scheduled operations if this permission is removed. \nAccess_network_state – required parameter. It enables us to determine when a user is online and also helps us optimize users traffic. Without it we cannot optimize the work of the SDK, which might lead to the battery discharge. \nSystem_alert_window – required parameter for applications that support API v.18 and below. We will not be able to display ads outside of the application without it.\nGet_tasks - required parameter for applications that support API v.20 and below. It enables us to get the necessary information for advertisement targeting (to find out what apps are used and how often) and define appropriate display time for our ads (e.g. we do not show ads if the navigator is being used / during a call / any other important activities which require high user attention)\n\n**Optional Permissions**\nRead_phone_state – optional, but recommended parameter. This permission lets us identify the device as unique in our system and keeps statistics in order.\nWrite_external_storage - optional, but recommended parameter. This permission is used by ad networks to cache creatives on the SD card without clogging the internal memory of the device. It can also use the cache for different applications to optimize traffic and download speeds for our ads.\nRead_gservice – optional parameter. It increases the fill rate for ad networks, and is required for proper targeting.\nActivity_recognition – optional parameter. It increases the fill rate, as well as improves the determination of the user's concentration. Thus, our SDK will not serve ads and interfere with the user during important activities.\nWake_lock, broadcast_sticky – optional. This permissions has become obsolete; you can safely remove them.\nAccess_coarse_location, Access_fine_location - optional but recommended parameter. We use location data for more relevant ad targeting and to increase fill rates from ad networks. \ncom.google.android.c2dm.permission.RECEIVE - optional parameter. It gives us ability to use Google Cloud Messages to communicate with our SDK.\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"You'll receive the entire list of the manifest components and other data in the instruction doc you'll download upon generating SDK in your dashboard.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"2. Launch Tapcore SDK\"\n}\n[/block]\nTo launch Tapcore SDK you'll only need one method with no additional data. You'll see that method in the instruction doc you'll download upon generating SDK in your dashboard.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"3. Proguard\"\n}\n[/block]\nIf you use Proguard in your project, please, set it up according to the instruction doc you'll download upon generating SDK in your dashboard.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"What next?\"\n}\n[/block]\nYou successfully integrated Tapcore SDK. You may check the dashboard in N hours (depending on what you set up when you generate the SDK) for stats on your impressions, earnings, and more.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Need assistance?\"\n}\n[/block]\nContact Tapcore support team: [support@tapcore.com](mailto:support@tapcore.com)","excerpt":"","slug":"sdk-integration-manual","type":"basic","title":"Tapcore Android SDK Integration (Manual)"}

Tapcore Android SDK Integration (Manual)


Hi there! This is a step-by-step tutorial on how to manually integrate Tapcore's SDK in your app in under 3 minutes. Have questions? Contact us: [support@tapcore.com](mailto:support@tapcore.com) [block:embed] { "html": "<iframe class=\"embedly-embed\" src=\"//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FNm22_Eb_jqQ%3Ffeature%3Doembed&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DNm22_Eb_jqQ&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FNm22_Eb_jqQ%2Fhqdefault.jpg&key=f2aa6fc3595946d0afc3d76cbbd25dc3&type=text%2Fhtml&schema=youtube\" width=\"854\" height=\"480\" scrolling=\"no\" frameborder=\"0\" allowfullscreen></iframe>", "url": "https://www.youtube.com/watch?v=Nm22_Eb_jqQ", "title": "Tapcore Android SDK Integration (Manual)", "favicon": "https://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico", "image": "https://i.ytimg.com/vi/Nm22_Eb_jqQ/hqdefault.jpg" } [/block] Integrating Tapcore SDK in your app consists of several simple steps. Let's dive right in! First, go to [Dashboard > Apps](http://my.tapcore.com/apps), add your app(s), and press *Integrate*. You'll be presented with 2 options – manual & automatic integration. [block:api-header] { "type": "basic", "title": "0. Generate and download your SDK" } [/block] ## 1. Manual integration This option is less popular but its advantages are: - you can integrate Tapcore SDK while manually building your .apk - you can configure ProGuard ## 2. Automatic integration Most of our users choose this option – Tapcore automatically wraps SDK in your app, you just have to download the final build and update it on Google Play. [Learn to automatically integrate Tapcore SDK](https://tapcore-documentation.readme.io/docs/sdk-integration-automatic). [block:api-header] { "type": "basic", "title": "Manual Integration" } [/block] Put library *tapcore-iv-8-1.13.jar* into libs directory of your project. Add it to a buildpath of project. Next, integrate these advanced libraries: * [GooglePlayServices](https://developers.google.com/android/guides/setup) * [android-support-appcompat-v7](https://developer.android.com/intl/ru/tools/support-library/features.html#v7) * [android-support-v4](https://developer.android.com/intl/ru/tools/support-library/features.html#v4) Manifest will require these components: - 24 activities - 3 receivers - 3 services - 1 meta You'll also need to add these permissions to your manifest (do not duplicate any permissions (we support Android API 10+)): [block:code] { "codes": [ { "code": "<uses-permission android:name=\"android.permission.INTERNET\" />\n<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />\n<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />\n<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />\n<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />\n<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"\n\tandroid:maxSdkVersion=\"18\" />\n<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />\n<uses-permission android:name=\"com.google.android.gms.permission.ACTIVITY_RECOGNITION\" />\n<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />\n<uses-permission android:name=\"com.google.android.providers.gsf.permission.READ_GSERVICES\" />\n<uses-permission android:name=\"android.permission.GET_TASKS\"\n\tandroid:maxSdkVersion=\"20\" />\n<uses-permission android:name=\"android.permission.WAKE_LOCK\" />\n<uses-permission android:name=\"android.permission.BROADCAST_STICKY\" />\n<uses-permission android:name=\"com.google.android.c2dm.permission.RECEIVE\" />\n<permission\n android:name=\"<your_package_name>.permission.C2D_MESSAGE\"\n android:protectionLevel=\"signature\" />\n<uses-permission android:name=\"<your_package_name>.permission.C2D_MESSAGE\" />", "language": "xml", "name": "Add new activities, receivers and services" } ] } [/block] **Required Permissions** Internet – required parameter. Our SDK is unable to display ads without it. Access_wifi_state – required parameter. Our SDK will not be able to optimize traffic on complex connections via Wi-Fi (e.g. in case of an access point has a mobile Internet) and perform certain scheduled operations if this permission is removed. Access_network_state – required parameter. It enables us to determine when a user is online and also helps us optimize users traffic. Without it we cannot optimize the work of the SDK, which might lead to the battery discharge. System_alert_window – required parameter for applications that support API v.18 and below. We will not be able to display ads outside of the application without it. Get_tasks - required parameter for applications that support API v.20 and below. It enables us to get the necessary information for advertisement targeting (to find out what apps are used and how often) and define appropriate display time for our ads (e.g. we do not show ads if the navigator is being used / during a call / any other important activities which require high user attention) **Optional Permissions** Read_phone_state – optional, but recommended parameter. This permission lets us identify the device as unique in our system and keeps statistics in order. Write_external_storage - optional, but recommended parameter. This permission is used by ad networks to cache creatives on the SD card without clogging the internal memory of the device. It can also use the cache for different applications to optimize traffic and download speeds for our ads. Read_gservice – optional parameter. It increases the fill rate for ad networks, and is required for proper targeting. Activity_recognition – optional parameter. It increases the fill rate, as well as improves the determination of the user's concentration. Thus, our SDK will not serve ads and interfere with the user during important activities. Wake_lock, broadcast_sticky – optional. This permissions has become obsolete; you can safely remove them. Access_coarse_location, Access_fine_location - optional but recommended parameter. We use location data for more relevant ad targeting and to increase fill rates from ad networks. com.google.android.c2dm.permission.RECEIVE - optional parameter. It gives us ability to use Google Cloud Messages to communicate with our SDK. [block:callout] { "type": "info", "body": "You'll receive the entire list of the manifest components and other data in the instruction doc you'll download upon generating SDK in your dashboard." } [/block] [block:api-header] { "type": "basic", "title": "2. Launch Tapcore SDK" } [/block] To launch Tapcore SDK you'll only need one method with no additional data. You'll see that method in the instruction doc you'll download upon generating SDK in your dashboard. [block:api-header] { "type": "basic", "title": "3. Proguard" } [/block] If you use Proguard in your project, please, set it up according to the instruction doc you'll download upon generating SDK in your dashboard. [block:api-header] { "type": "basic", "title": "What next?" } [/block] You successfully integrated Tapcore SDK. You may check the dashboard in N hours (depending on what you set up when you generate the SDK) for stats on your impressions, earnings, and more. [block:api-header] { "type": "basic", "title": "Need assistance?" } [/block] Contact Tapcore support team: [support@tapcore.com](mailto:support@tapcore.com)