{"__v":8,"_id":"55a9075bcf45e1390093f2a9","category":{"__v":12,"_id":"55a8e7a227a17d21005251a2","pages":["55a8feb327a17d2100525201","55a9021527a17d2100525208","55a9035927a17d210052520b","55a903cfcf45e1390093f29e","55a9049727a17d210052520f","55a9059a27a17d2100525217","55a9066527a17d210052521e","55a9075bcf45e1390093f2a9","55a9090927a17d2100525228","55a90b30c8bd450d000dd164","55a90c56cf45e1390093f2bf","55a9102bc8bd450d000dd170"],"project":"559a61d2dbcfd20d00710b39","version":"559a61d2dbcfd20d00710b3c","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-07-17T11:31:46.263Z","from_sync":false,"order":2,"slug":"ios-sdk-reference","title":"iOS SDK Reference"},"parentDoc":null,"project":"559a61d2dbcfd20d00710b39","user":"559a618bdbcfd20d00710b38","version":{"__v":23,"_id":"559a61d2dbcfd20d00710b3c","project":"559a61d2dbcfd20d00710b39","createdAt":"2015-07-06T11:09:06.510Z","releaseDate":"2015-07-06T11:09:06.510Z","categories":["559a61d3dbcfd20d00710b3d","55a589ddaaf9cf1900114dd0","55a589e30f354f0d00fd0312","55a589ea80c8a30d00b323cc","55a589f6aaf9cf1900114dd1","55a58d4e80c8a30d00b323e6","55a8e7a227a17d21005251a2","55a93098cf45e1390093f351","55afb085f202b12100cd9e83","55afb22e902fd51700f5f8bf","55afb260902fd51700f5f8c2","55afb28ec8a85321007a5462","55afb294f202b12100cd9e95","55afb29b902fd51700f5f8c5","55afb2a1c8a85321007a5463","55afb2a7902fd51700f5f8c7","55afb2ad902fd51700f5f8c8","55afb2b5902fd51700f5f8ca","55b74b2131bccb190081bedc","55bb441b54f9640d006e6cf2","565711085cb2420d00d70071","5681681330018c0d006bf7ff","588f38b5923d610f00c72dad"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-07-17T13:47:07.890Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":8,"body":"##Features\n\n- Push notification registration\n - Automatic - configure MOCA SDK to register your app for remote push notifications.\n - Manual – handle remote push notification registration from your app and only register deviceToken in the  SDK \n- Push notification tracking\n - Tracked received push notifications with MOCA SDK. \n - The tracked data can be analyzed in MOCA Analytics (Pushes, PushOpened, and more).\n\n##Integration\n\nTo use automatic push notifications registration in MOCA, you’ll need to enable push service.\n\n1. Ensure automatic push setup is enabled in MOCAConfig.plist file.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/YSZRxxoGS6qEegXyCQg8_push.png\",\n        \"push.png\",\n        \"587\",\n        \"245\",\n        \"#3e5077\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n2 . The `[MOCA initializeSDK] `call will register for remote push notification for you:\n\n- For iOS7: `[[UIApplication sharedApplication] registerForRemoteNotificationTypes:] `\n- For iOS8+:` [[UIApplication sharedApplication] registerUserNotificationSettings:]` and  `[[UIApplication sharedApplication] registerForRemoteNotifications:] ` \n\n\n3. Next, implement `[didRegisterForRemoteNotificationsWithDeviceToken:]` app delegate callback:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken\\n{\\n    NSLog(:::at:::\\\"APNS token: %@\\\", deviceToken);\\n    // Register push token in MOCA\\n    [MOCA registerDeviceToken:deviceToken];\\n}\",\n      \"language\": \"objectivec\",\n      \"name\": \"Send received push token to MOCA Cloud\"\n    }\n  ]\n}\n[/block]\nAnd handle errors through the following callback.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error\\n{\\n   // Handle error\\n  NSLog(@\\\"Push notifications registration failed 😨\\\");\\n}\\n\",\n      \"language\": \"objectivec\",\n      \"name\": \"Handle registration errors\"\n    }\n  ]\n}\n[/block]\n4.  Complete, the process by implementing the app delegate callbacks:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"//Called after user taps a notification\\n- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification\\n{\\n    if (MOCA.initialized) {\\n        [MOCA handleLocalNotification:notification];\\n    }  \\n}\\n\\n//Called when the remote push notification is received from the server\\n-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{\\n    \\n    if (MOCA.initialized) {\\n        [MOCA handleRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\\n    }\\n}\\n\",\n      \"language\": \"objectivec\",\n      \"name\": \"Handle remote notifications\"\n    }\n  ]\n}\n[/block]","excerpt":"MOCA SDK easily integrates with iOS push notifications.","slug":"push-api","type":"basic","title":"Push API"}

Push API

MOCA SDK easily integrates with iOS push notifications.

##Features - Push notification registration - Automatic - configure MOCA SDK to register your app for remote push notifications. - Manual – handle remote push notification registration from your app and only register deviceToken in the SDK - Push notification tracking - Tracked received push notifications with MOCA SDK. - The tracked data can be analyzed in MOCA Analytics (Pushes, PushOpened, and more). ##Integration To use automatic push notifications registration in MOCA, you’ll need to enable push service. 1. Ensure automatic push setup is enabled in MOCAConfig.plist file. [block:image] { "images": [ { "image": [ "https://files.readme.io/YSZRxxoGS6qEegXyCQg8_push.png", "push.png", "587", "245", "#3e5077", "" ] } ] } [/block] 2 . The `[MOCA initializeSDK] `call will register for remote push notification for you: - For iOS7: `[[UIApplication sharedApplication] registerForRemoteNotificationTypes:] ` - For iOS8+:` [[UIApplication sharedApplication] registerUserNotificationSettings:]` and `[[UIApplication sharedApplication] registerForRemoteNotifications:] ` 3. Next, implement `[didRegisterForRemoteNotificationsWithDeviceToken:]` app delegate callback: [block:code] { "codes": [ { "code": "- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken\n{\n NSLog(@\"APNS token: %@\", deviceToken);\n // Register push token in MOCA\n [MOCA registerDeviceToken:deviceToken];\n}", "language": "objectivec", "name": "Send received push token to MOCA Cloud" } ] } [/block] And handle errors through the following callback. [block:code] { "codes": [ { "code": "- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error\n{\n // Handle error\n NSLog(@\"Push notifications registration failed 😨\");\n}\n", "language": "objectivec", "name": "Handle registration errors" } ] } [/block] 4. Complete, the process by implementing the app delegate callbacks: [block:code] { "codes": [ { "code": "//Called after user taps a notification\n- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification\n{\n if (MOCA.initialized) {\n [MOCA handleLocalNotification:notification];\n } \n}\n\n//Called when the remote push notification is received from the server\n-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{\n \n if (MOCA.initialized) {\n [MOCA handleRemoteNotification:userInfo fetchCompletionHandler:completionHandler];\n }\n}\n", "language": "objectivec", "name": "Handle remote notifications" } ] } [/block]