{"_id":"56e51bf22d90970e00af1b18","category":{"_id":"56d369331660770b00081159","__v":5,"project":"56cecbdb44c5700b0095c03a","pages":["56d403d87e7f160b00cd10a8","56e51bf22d90970e00af1b18","56e527ad75eb791700a9c4c4","56e538732d90970e00af1b28","56e6941a0d2f0f0e009326b0"],"version":"56cecbdc44c5700b0095c03d","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-02-28T21:40:03.218Z","from_sync":false,"order":1,"slug":"android","title":"Android"},"__v":38,"parentDoc":null,"githubsync":"","project":"56cecbdb44c5700b0095c03a","user":"56cecbb2e50c9c1b008303eb","version":{"_id":"56cecbdc44c5700b0095c03d","project":"56cecbdb44c5700b0095c03a","__v":10,"createdAt":"2016-02-25T09:39:40.121Z","releaseDate":"2016-02-25T09:39:40.121Z","categories":["56cecbdc44c5700b0095c03e","56d1d2c05ad7ad0b00b7e809","56d1d2fa5ad7ad0b00b7e80a","56d369331660770b00081159","56d3693d1660770b0008115a","56e5361e7990160e002e3fbc","56e5362775eb791700a9c4d2","57a9030947f2f419009188d4","57b4705ee9e4c60e00f6f4c3","5828f5b04774ab0f005179a2"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"metadata":{"title":"","description":"","image":[]},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-03-13T07:51:14.312Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Before you begin...\",\n  \"body\": \"We strongly recommend to set your GCM credentials in the PushApps Admin Console, before integrating the PushApps SDK. <a target=\\\"_blank\\\" href=\\\"https://docs.pushapps.mobi/v1.0/docs/setup-your-push-notifications-credentials\\\">Please check our guide for that</a>.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"1. Project setup\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Required libs\",\n  \"body\": \"PushApps SDK require the google play services library and the android-support-v4.jar. Please make sure both of them are available, for you Android application project.\"\n}\n[/block]\n1.1 [Download the PushApps SDK.](https://s3.amazonaws.com/pushapps-sdk/android/pushappssdk.zip) \n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Right-To-Left Version\",\n  \"body\": \"If you need a Right-To-Left version, please download the SDK from this [link](https://s3.amazonaws.com/pushapps-sdk/android/pushappssdk-rtl.zip).\"\n}\n[/block]\n1.2 Copy the pushapps.jar file into your libs folder.\n\n1.3 Copy all the xml files into your res/layout folder.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"PushApps layout files\",\n  \"body\": \"Please make sure not to make any changes in the resource files. Changing elements, especially identifiers, can cause PushApps to not display it's rich notification UI.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"2. Android Manifest\"\n}\n[/block]\n1.1 Inside the application tag, please copy the following lines.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"PushApps SDK key and GCM sender ID\",\n  \"body\": \"Don't forget to replace <YOUR_SDK_KEY> with your PushApps SDK key. Also, please notice you'll need to replace <YOUR_SENDER_ID> with your GCM sender ID. **Please keep the \\\"pa:\\\" prefix.**\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<activity\\n            android:name=\\\"mobi.pushapps.PAActivity\\\"\\n            android:configChanges=\\\"orientation|keyboardHidden\\\" >\\n            <intent-filter>\\n                <action android:name=\\\"android.intent.action.VIEW\\\" />\\n\\n                <category android:name=\\\"android.intent.category.DEFAULT\\\" />\\n                <category android:name=\\\"android.intent.category.BROWSABLE\\\" />\\n\\n                <data android:scheme=\\\"pushapps-<YOUR-SDK-KEY>\\\" />\\n            </intent-filter>\\n</activity>\\n<activity\\n    android:name=\\\"mobi.pushapps.PAPopup\\\"\\n    android:configChanges=\\\"orientation|keyboardHidden\\\"\\n    android:theme=\\\":::at:::android:style/Theme.Translucent.NoTitleBar\\\" />\\n\\n<meta-data\\n    android:name=\\\"PushApps_SdkKey\\\"\\n    android:value=\\\"<YOUR_SDK_KEY>\\\" />\\n<meta-data\\n    android:name=\\\"PushApps_SenderId\\\"\\n    android:value=\\\"pa:<YOUR_SENDER_ID>\\\" />\\n\\n<receiver\\n    android:name=\\\"mobi.pushapps.sync.PASyncConfigurationReceiver\\\"\\n    android:enabled=\\\"true\\\" >\\n \\t \\t<intent-filter>\\n    \\t\\t<action android:name=\\\"mobi.pushapps.sync.SYNC_CONFIGURATIONS\\\" />\\n\\t  </intent-filter>\\n</receiver>\\n<receiver\\n    android:name=\\\"mobi.pushapps.sync.PASyncRecommendationsReceiver\\\"\\n    android:enabled=\\\"true\\\" >\\n  \\t<intent-filter>\\n    \\t\\t<action android:name=\\\"mobi.pushapps.sync.SYNC_RECOMMENDATIONS\\\" />\\n\\t  </intent-filter>\\n</receiver>\\n<receiver\\n    android:name=\\\"mobi.pushapps.events.PASyncEventsReceiver\\\"\\n    android:enabled=\\\"true\\\" >\\n\\t  <intent-filter>\\n   \\t\\t <action android:name=\\\"mobi.pushapps.events.SYNC_EVENTS\\\" />\\n\\t  </intent-filter>\\n</receiver>\\n<receiver\\n            android:name=\\\"com.google.android.gms.gcm.GcmReceiver\\\"\\n            android:exported=\\\"true\\\"\\n            android:permission=\\\"com.google.android.c2dm.permission.SEND\\\" >\\n            <intent-filter>\\n                <action android:name=\\\"com.google.android.c2dm.intent.RECEIVE\\\" />\\n                <category android:name=\\\"<YOUR_PACKAGE_NAME>\\\" />\\n            </intent-filter>\\n        </receiver>\\n\\n<service\\n\\t\\tandroid:name=\\\"mobi.pushapps.gcm.PAGcmListenerService\\\"\\n    android:exported=\\\"false\\\" >\\n  \\t<intent-filter>\\n    \\t\\t<action android:name=\\\"com.google.android.c2dm.intent.RECEIVE\\\" />\\n        <category android:name=\\\"<YOUR_PACKAGE_NAME>\\\" />\\n\\t  </intent-filter>\\n</service>\\n<service\\n    android:name=\\\"mobi.pushapps.gcm.PAInstanceIDListenerService\\\"\\n    android:exported=\\\"false\\\" >\\n  \\t<intent-filter>\\n    \\t\\t<action android:name=\\\"com.google.android.gms.iid.InstanceID\\\" />\\n  \\t</intent-filter>\\n</service>\\n<service\\n    android:name=\\\"mobi.pushapps.gcm.PARegistrationIntentService\\\"\\n    android:exported=\\\"false\\\" >\\n</service>\",\n      \"language\": \"xml\"\n    }\n  ]\n}\n[/block]\nAlso, please make sure the following permissions are set in the manifest, in order to enable push notifications:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<permission android:name=\\\"<YOUR_PACKAGE_NAME>.permission.C2D_MESSAGE\\\"\\n            android:protectionLevel=\\\"signature\\\" />\\n<uses-permission android:name=\\\"<YOUR_PACKAGE_NAME>.permission.C2D_MESSAGE\\\" />\\n<uses-permission android:name=\\\"android.permission.INTERNET\\\" />\\n<uses-permission android:name=\\\"com.google.android.c2dm.permission.RECEIVE\\\" />\\n<uses-permission android:name=\\\"android.permission.WAKE_LOCK\\\" />\\n<uses-permission android:name=\\\"android.permission.VIBRATE\\\" />\\n<uses-permission android:name=\\\"android.permission.ACCESS_NETWORK_STATE\\\" />\",\n      \"language\": \"xml\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Please don't forget\",\n  \"body\": \"To replace <YOUR_PACKAGE_NAME> with your real package name, as defined in the manifest.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"3. Add some code\"\n}\n[/block]\n3.1 Inside your application file (the one that extends the ```android.app.Application``` class, if you don't have one, please create it), add the following code:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"import mobi.pushapps.PushApps;\\n\\npublic class DemoApplication extends Application {\\n\\t\\n\\t@Override\\n\\tpublic void onCreate() {\\n\\t\\tsuper.onCreate();\\n\\t\\t//register(Context) is an init function. to disable or enable receiving of push notifications use enablePush(Context, boolean)\\n\\t\\tPushApps.register(this); // Register device to PushApps\\n\\t}\\n\\n}\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"4. Handling incoming notifications\"\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Integration with external push providers\",\n  \"body\": \"If you're using an external push provider, we recommend that you check our [Integration With External Push Providers](doc:integration-with-external-push-providers).\"\n}\n[/block]\nYou can add your own fallback to PushApps onMessageReceived method (put it just after the register call):\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"PushApps.setNotificationListener(this, new PANotificationListener() {\\n\\t\\t\\t\\n\\t\\t\\t@Override\\n\\t\\t\\tpublic void onMessageReceived(Context context, Bundle bundle) {\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tLog.d(TAG, \\\"Execute your own code here...\\\");\\n\\t\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t});\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"5. Handle user clicks on notifications\"\n}\n[/block]\nIn your main activity, add the following code:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"@Override\\nprotected void onNewIntent(Intent intent) {\\n\\t\\tsetIntent(intent);\\n}\\n\\n@Override\\npublic void onResume() {\\n    super.onResume();\\n    checkForPushNotificationClicks();\\n}\\n\\nprivate void checkForPushNotificationClicks() {\\n\\t\\tBundle bundle = getIntent().getExtras();\\n    //removing our extra value so if the activity is resumed it won't seem like a new push click\\n    getIntent().removeExtra(PAActivity.PANotificationKeys.ClickType);\\n\\t\\tif (bundle != null) {\\n    \\t\\tString clickType = bundle.getString(PAActivity.PANotificationKeys.ClickType);\\n    \\t\\tif (clickType != null) {\\n       \\t\\t\\tif (clickType.equals(PAClickType.PADefaultLayoutClick) ||\\n                clickType.equals(PAClickType.PAMainSmallViewClick) ||\\n                clickType.equals(PAClickType.PAMainLayoutClick)) {\\n\\n                    // Main notification was clicked, due whatever\\n              \\t\\t\\t// you used to do (e.g. extract your custom\\n                    // keys and direct the user to a specific screen).\\n              \\t\\t\\t// You can also access the main notification\\n                    // url, by bundle.getString(\\n              \\t\\t\\t// PAActivity.PANotificationKeys.ArticleUrl).\\n\\n            } else if (clickType.equals(PAClickType.PAVideoClick)) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t//handle video clicks\\n   \\t\\t\\t\\t\\t\\tString videoUrl =  bundle.getString(PAActivity.PANotificationKeys.VideoUrl);\\n            } else if (clickType.equals(PAClickType.PAEnrichmentClick)) {\\n\\n                    String articleUrl = bundle.getString(\\n                      PAActivity.PANotificationKeys.ArticleUrl);\\n\\n                    // Take the user to this article url,\\n              \\t\\t\\t// or extract information from it.\\n            \\t\\t}\\n\\n        \\t}\\n    \\t}\\n\\t}\\n\",\n      \"language\": \"java\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"6. Notification icon\"\n}\n[/block]\nAs of Android Lollipop (5.0), the notification icon must be white. To see the exact guidelines, please visit the [Android Developer Center](https://developer.android.com/design/patterns/notifications.html). In order to set a specific notification icon, please add the following to the application tag in your `AndroidManifest.xml`:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<meta-data\\n      android:name=\\\"PushApps_NotificationIcon\\\"\\n      android:resource=\\\"@drawable/icon_notifications\\\" />\",\n      \"language\": \"xml\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"7. Test your code\"\n}\n[/block]\nIn order to verify everything works as it should, please do the following:\n* Send a push message and verify you get the enrichment\n* Click on the push and verify the right action took place\n* Check your admin console to see that your opened push was counted as “Open”\n[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"That's it!\",\n  \"body\": \"Your app is now ready to receive enriched push notifications. You can visit our Admin Console section, to learn more on how to build your campaigns and templates, how to manage your assets and see your notifications statistics.\"\n}\n[/block]","excerpt":"","slug":"sdk-installation-eclipse","type":"basic","title":"SDK Installation (Android Studio / Eclipse)"}

SDK Installation (Android Studio / Eclipse)


[block:callout] { "type": "info", "title": "Before you begin...", "body": "We strongly recommend to set your GCM credentials in the PushApps Admin Console, before integrating the PushApps SDK. <a target=\"_blank\" href=\"https://docs.pushapps.mobi/v1.0/docs/setup-your-push-notifications-credentials\">Please check our guide for that</a>." } [/block] [block:api-header] { "type": "basic", "title": "1. Project setup" } [/block] [block:callout] { "type": "info", "title": "Required libs", "body": "PushApps SDK require the google play services library and the android-support-v4.jar. Please make sure both of them are available, for you Android application project." } [/block] 1.1 [Download the PushApps SDK.](https://s3.amazonaws.com/pushapps-sdk/android/pushappssdk.zip) [block:callout] { "type": "warning", "title": "Right-To-Left Version", "body": "If you need a Right-To-Left version, please download the SDK from this [link](https://s3.amazonaws.com/pushapps-sdk/android/pushappssdk-rtl.zip)." } [/block] 1.2 Copy the pushapps.jar file into your libs folder. 1.3 Copy all the xml files into your res/layout folder. [block:callout] { "type": "warning", "title": "PushApps layout files", "body": "Please make sure not to make any changes in the resource files. Changing elements, especially identifiers, can cause PushApps to not display it's rich notification UI." } [/block] [block:api-header] { "type": "basic", "title": "2. Android Manifest" } [/block] 1.1 Inside the application tag, please copy the following lines. [block:callout] { "type": "warning", "title": "PushApps SDK key and GCM sender ID", "body": "Don't forget to replace <YOUR_SDK_KEY> with your PushApps SDK key. Also, please notice you'll need to replace <YOUR_SENDER_ID> with your GCM sender ID. **Please keep the \"pa:\" prefix.**" } [/block] [block:code] { "codes": [ { "code": "<activity\n android:name=\"mobi.pushapps.PAActivity\"\n android:configChanges=\"orientation|keyboardHidden\" >\n <intent-filter>\n <action android:name=\"android.intent.action.VIEW\" />\n\n <category android:name=\"android.intent.category.DEFAULT\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n\n <data android:scheme=\"pushapps-<YOUR-SDK-KEY>\" />\n </intent-filter>\n</activity>\n<activity\n android:name=\"mobi.pushapps.PAPopup\"\n android:configChanges=\"orientation|keyboardHidden\"\n android:theme=\"@android:style/Theme.Translucent.NoTitleBar\" />\n\n<meta-data\n android:name=\"PushApps_SdkKey\"\n android:value=\"<YOUR_SDK_KEY>\" />\n<meta-data\n android:name=\"PushApps_SenderId\"\n android:value=\"pa:<YOUR_SENDER_ID>\" />\n\n<receiver\n android:name=\"mobi.pushapps.sync.PASyncConfigurationReceiver\"\n android:enabled=\"true\" >\n \t \t<intent-filter>\n \t\t<action android:name=\"mobi.pushapps.sync.SYNC_CONFIGURATIONS\" />\n\t </intent-filter>\n</receiver>\n<receiver\n android:name=\"mobi.pushapps.sync.PASyncRecommendationsReceiver\"\n android:enabled=\"true\" >\n \t<intent-filter>\n \t\t<action android:name=\"mobi.pushapps.sync.SYNC_RECOMMENDATIONS\" />\n\t </intent-filter>\n</receiver>\n<receiver\n android:name=\"mobi.pushapps.events.PASyncEventsReceiver\"\n android:enabled=\"true\" >\n\t <intent-filter>\n \t\t <action android:name=\"mobi.pushapps.events.SYNC_EVENTS\" />\n\t </intent-filter>\n</receiver>\n<receiver\n android:name=\"com.google.android.gms.gcm.GcmReceiver\"\n android:exported=\"true\"\n android:permission=\"com.google.android.c2dm.permission.SEND\" >\n <intent-filter>\n <action android:name=\"com.google.android.c2dm.intent.RECEIVE\" />\n <category android:name=\"<YOUR_PACKAGE_NAME>\" />\n </intent-filter>\n </receiver>\n\n<service\n\t\tandroid:name=\"mobi.pushapps.gcm.PAGcmListenerService\"\n android:exported=\"false\" >\n \t<intent-filter>\n \t\t<action android:name=\"com.google.android.c2dm.intent.RECEIVE\" />\n <category android:name=\"<YOUR_PACKAGE_NAME>\" />\n\t </intent-filter>\n</service>\n<service\n android:name=\"mobi.pushapps.gcm.PAInstanceIDListenerService\"\n android:exported=\"false\" >\n \t<intent-filter>\n \t\t<action android:name=\"com.google.android.gms.iid.InstanceID\" />\n \t</intent-filter>\n</service>\n<service\n android:name=\"mobi.pushapps.gcm.PARegistrationIntentService\"\n android:exported=\"false\" >\n</service>", "language": "xml" } ] } [/block] Also, please make sure the following permissions are set in the manifest, in order to enable push notifications: [block:code] { "codes": [ { "code": "<permission android:name=\"<YOUR_PACKAGE_NAME>.permission.C2D_MESSAGE\"\n android:protectionLevel=\"signature\" />\n<uses-permission android:name=\"<YOUR_PACKAGE_NAME>.permission.C2D_MESSAGE\" />\n<uses-permission android:name=\"android.permission.INTERNET\" />\n<uses-permission android:name=\"com.google.android.c2dm.permission.RECEIVE\" />\n<uses-permission android:name=\"android.permission.WAKE_LOCK\" />\n<uses-permission android:name=\"android.permission.VIBRATE\" />\n<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />", "language": "xml" } ] } [/block] [block:callout] { "type": "warning", "title": "Please don't forget", "body": "To replace <YOUR_PACKAGE_NAME> with your real package name, as defined in the manifest." } [/block] [block:api-header] { "type": "basic", "title": "3. Add some code" } [/block] 3.1 Inside your application file (the one that extends the ```android.app.Application``` class, if you don't have one, please create it), add the following code: [block:code] { "codes": [ { "code": "import mobi.pushapps.PushApps;\n\npublic class DemoApplication extends Application {\n\t\n\t@Override\n\tpublic void onCreate() {\n\t\tsuper.onCreate();\n\t\t//register(Context) is an init function. to disable or enable receiving of push notifications use enablePush(Context, boolean)\n\t\tPushApps.register(this); // Register device to PushApps\n\t}\n\n}", "language": "java" } ] } [/block] [block:api-header] { "type": "basic", "title": "4. Handling incoming notifications" } [/block] [block:callout] { "type": "info", "title": "Integration with external push providers", "body": "If you're using an external push provider, we recommend that you check our [Integration With External Push Providers](doc:integration-with-external-push-providers)." } [/block] You can add your own fallback to PushApps onMessageReceived method (put it just after the register call): [block:code] { "codes": [ { "code": "PushApps.setNotificationListener(this, new PANotificationListener() {\n\t\t\t\n\t\t\t@Override\n\t\t\tpublic void onMessageReceived(Context context, Bundle bundle) {\n\t\t\t\t\n\t\t\t\tLog.d(TAG, \"Execute your own code here...\");\n\t\t\t\t\n\t\t\t}\n\t\t});", "language": "java" } ] } [/block] [block:api-header] { "type": "basic", "title": "5. Handle user clicks on notifications" } [/block] In your main activity, add the following code: [block:code] { "codes": [ { "code": "@Override\nprotected void onNewIntent(Intent intent) {\n\t\tsetIntent(intent);\n}\n\n@Override\npublic void onResume() {\n super.onResume();\n checkForPushNotificationClicks();\n}\n\nprivate void checkForPushNotificationClicks() {\n\t\tBundle bundle = getIntent().getExtras();\n //removing our extra value so if the activity is resumed it won't seem like a new push click\n getIntent().removeExtra(PAActivity.PANotificationKeys.ClickType);\n\t\tif (bundle != null) {\n \t\tString clickType = bundle.getString(PAActivity.PANotificationKeys.ClickType);\n \t\tif (clickType != null) {\n \t\t\tif (clickType.equals(PAClickType.PADefaultLayoutClick) ||\n clickType.equals(PAClickType.PAMainSmallViewClick) ||\n clickType.equals(PAClickType.PAMainLayoutClick)) {\n\n // Main notification was clicked, due whatever\n \t\t\t// you used to do (e.g. extract your custom\n // keys and direct the user to a specific screen).\n \t\t\t// You can also access the main notification\n // url, by bundle.getString(\n \t\t\t// PAActivity.PANotificationKeys.ArticleUrl).\n\n } else if (clickType.equals(PAClickType.PAVideoClick)) {\n\t\t\t\t\t\t\t\t\t\t//handle video clicks\n \t\t\t\t\t\tString videoUrl = bundle.getString(PAActivity.PANotificationKeys.VideoUrl);\n } else if (clickType.equals(PAClickType.PAEnrichmentClick)) {\n\n String articleUrl = bundle.getString(\n PAActivity.PANotificationKeys.ArticleUrl);\n\n // Take the user to this article url,\n \t\t\t// or extract information from it.\n \t\t}\n\n \t}\n \t}\n\t}\n", "language": "java" } ] } [/block] [block:api-header] { "type": "basic", "title": "6. Notification icon" } [/block] As of Android Lollipop (5.0), the notification icon must be white. To see the exact guidelines, please visit the [Android Developer Center](https://developer.android.com/design/patterns/notifications.html). In order to set a specific notification icon, please add the following to the application tag in your `AndroidManifest.xml`: [block:code] { "codes": [ { "code": "<meta-data\n android:name=\"PushApps_NotificationIcon\"\n android:resource=\"@drawable/icon_notifications\" />", "language": "xml" } ] } [/block] [block:api-header] { "type": "basic", "title": "7. Test your code" } [/block] In order to verify everything works as it should, please do the following: * Send a push message and verify you get the enrichment * Click on the push and verify the right action took place * Check your admin console to see that your opened push was counted as “Open” [block:callout] { "type": "success", "title": "That's it!", "body": "Your app is now ready to receive enriched push notifications. You can visit our Admin Console section, to learn more on how to build your campaigns and templates, how to manage your assets and see your notifications statistics." } [/block]