{
    "componentChunkName": "component---src-templates-doc-article-js",
    "path": "/sdk/v5/ios/push/advanced/notification-service-extension/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Notificare Docs"}},"mdx":{"id":"f5a5f96f-1dff-54a4-917e-e9e2a215b1b5","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Notification Service Extension | Advanced | Remote notifications | iOS | SDK\",\n  \"lang\": \"en\",\n  \"description\": \"...\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", null, \"Notification Service Extension\"), mdx(\"p\", null, \"Starting with iOS 10, Apple introduced the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Notification Service Extension\"), \", which allows apps to process incoming push notifications before they are displayed to the user.\"), mdx(\"p\", null, \"By implementing this extension, you can:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Enrich notifications with \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"rich media \"), \"(images, videos, audio).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Modify notification content dynamically before display.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Perform custom client-side processing of push messages.\")), mdx(\"p\", null, \"This guide walks you through creating and configuring a Notification Service Extension to enhance your notification experience.\"), mdx(\"h2\", null, \"Adding a Notification Service Extension\"), mdx(\"p\", null, \"To add the Notification Service Extension to your project, add a new target:\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1038px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"44.800000000000004%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"xcode service extensions new target\",\n    \"title\": \"xcode service extensions new target\",\n    \"src\": \"/static/dab6c5a4e508595494ed008f253be68e/76823/xcode-service-extensions-new-target.png\",\n    \"srcSet\": [\"/static/dab6c5a4e508595494ed008f253be68e/5ff7e/xcode-service-extensions-new-target.png 375w\", \"/static/dab6c5a4e508595494ed008f253be68e/1d69c/xcode-service-extensions-new-target.png 750w\", \"/static/dab6c5a4e508595494ed008f253be68e/76823/xcode-service-extensions-new-target.png 1038w\"],\n    \"sizes\": \"(max-width: 1038px) 100vw, 1038px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n    \")), mdx(\"p\", null, \"In the template selector, choose Notification Service Extension and click Next.\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1458px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"71.2%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"xcode service extension select extension\",\n    \"title\": \"xcode service extension select extension\",\n    \"src\": \"/static/28ddd61fbf784686b3a5373dbcb56c21/6b95e/xcode-service-extension-select-extension.png\",\n    \"srcSet\": [\"/static/28ddd61fbf784686b3a5373dbcb56c21/5ff7e/xcode-service-extension-select-extension.png 375w\", \"/static/28ddd61fbf784686b3a5373dbcb56c21/1d69c/xcode-service-extension-select-extension.png 750w\", \"/static/28ddd61fbf784686b3a5373dbcb56c21/6b95e/xcode-service-extension-select-extension.png 1458w\"],\n    \"sizes\": \"(max-width: 1458px) 100vw, 1458px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n    \")), mdx(\"p\", null, \"Provide a \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Product Name\"), \" for the extension (e.g., NotificationServiceExtension) and click \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Finish\"), \".\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1446px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"70.93333333333334%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"xcode service extension create target\",\n    \"title\": \"xcode service extension create target\",\n    \"src\": \"/static/934b9ceb8c852b9efe0806ef7d75110d/2ce39/xcode-service-extension-create-target.jpg\",\n    \"srcSet\": [\"/static/934b9ceb8c852b9efe0806ef7d75110d/bf173/xcode-service-extension-create-target.jpg 375w\", \"/static/934b9ceb8c852b9efe0806ef7d75110d/acb04/xcode-service-extension-create-target.jpg 750w\", \"/static/934b9ceb8c852b9efe0806ef7d75110d/2ce39/xcode-service-extension-create-target.jpg 1446w\"],\n    \"sizes\": \"(max-width: 1446px) 100vw, 1446px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n    \")), mdx(\"p\", null, \"This is going to add a new folder to your project with the new extension files.\"), mdx(\"p\", null, \"Using \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Swift Package Manager\"), \", add the \", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"ActitoNotificationServiceExtensionKit\"), \" dependency to both your main app target and the new notification service extension target, then proceed with its implementation.\"), mdx(\"h2\", null, \"Implementing the Extension\"), mdx(\"p\", null, \"In the newly created implementation file, add the following code to the \", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"didReceive\"), \" method to enable handling of rich notifications:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"swift\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"style\": {\n      \"counterReset\": \"linenumber NaN\"\n    },\n    \"className\": \"language-swift line-numbers\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-swift\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"import\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token builtin\"\n  }, \"ActitoNotificationServiceExtensionKit\"), \"\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"override\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"func\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"didReceive\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"_\"), \" request\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token builtin\"\n  }, \"UNNotificationRequest\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" withContentHandler contentHandler\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \" @escaping \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token builtin\"\n  }, \"UNNotificationContent\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \">\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token builtin\"\n  }, \"Void\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token builtin\"\n  }, \"ActitoNotificationServiceExtension\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"handleNotificationRequest\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"request\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \" result \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"in\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"switch\"), \" result \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"case\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"let\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"success\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"content\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n            \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"contentHandler\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"content\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"case\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"let\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"failure\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"error\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \":\"), \"\\n            \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"print\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"Failed to handle the notification request.\\\\n\", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"token interpolation\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"token delimiter variable\"\n  }, \"\\\\(\"), \"error\", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"token delimiter variable\"\n  }, \")\")), \"\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n            \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"contentHandler\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"request\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), \"content\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")), mdx(\"span\", {\n    parentName: \"pre\",\n    \"aria-hidden\": \"true\",\n    \"className\": \"line-numbers-rows\",\n    \"style\": {\n      \"whiteSpace\": \"normal\",\n      \"width\": \"auto\",\n      \"left\": \"0\"\n    }\n  }, mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  }), mdx(\"span\", {\n    parentName: \"span\"\n  })))), mdx(\"p\", null, \"Once your implementation is complete, you can include media attachments in your notifications by:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Uploading an image in the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Lock Screen Media\"), \" field when composing a message in the dashboard.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Including the attachments property in your notification payload when sending via the REST API.\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u26A0\\uFE0F \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \" Important:\"), \" To ensure reliable delivery, keep media files below 300 KB.\\niOS allows limited time for the extension to download attachments, and larger files may not complete in time on slow networks.\")), mdx(\"h2\", null, \"Configuring App Transport Security (Optional)\"), mdx(\"p\", null, \"Since the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Notification Service Extension\"), \" runs as a separate target, it maintains its own \", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"Info.plist\"), \" configuration.\"), mdx(\"p\", null, \"By default, iOS blocks non-secure (HTTP) network requests in extensions.\\nIf your lock screen media is hosted over an insecure protocol (\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"http://\"), \"), you must declare an App Transport Security exception in the extension\\u2019s \", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"Info.plist\"), \".\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1264px\"\n    }\n  }, \"\\n      \", mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"6.133333333333333%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"declare ats in plist\",\n    \"title\": \"declare ats in plist\",\n    \"src\": \"/static/0c97390c3db34a09368540436bba0b36/081d5/declare-ats-in-plist.png\",\n    \"srcSet\": [\"/static/0c97390c3db34a09368540436bba0b36/5ff7e/declare-ats-in-plist.png 375w\", \"/static/0c97390c3db34a09368540436bba0b36/1d69c/declare-ats-in-plist.png 750w\", \"/static/0c97390c3db34a09368540436bba0b36/081d5/declare-ats-in-plist.png 1264w\"],\n    \"sizes\": \"(max-width: 1264px) 100vw, 1264px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n    \")));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Notification Service Extension | Advanced | Remote notifications | iOS | SDK","description":"..."}}},"pageContext":{"slug":"/sdk/v5/ios/push/advanced/notification-service-extension/","previous":{"fields":{"slug":"/sdk/v5/ios/push/advanced/live-activities/"},"frontmatter":{"title":"Live Activities | Advanced | Remote notifications | iOS | SDK","description":"..."}},"next":{"fields":{"slug":"/sdk/v5/ios/push/advanced/"},"frontmatter":{"title":"Advanced | Remote notifications | iOS | SDK","description":"..."}},"language":"en","intl":{"language":"en","languages":["en"],"messages":{"title":"Notificare Docs","description":"Find the newest resources, guides and code. Make the most out of your app using our SDK and APIs.","author":"@notificare","pages.404.title":"These aren't the droids you're looking for","pages.404.description":"Probably the page you are looking for does not exist or was recently moved. If you think something is wrong please contact us.","pages.home.title":"Help Center","pages.home.description":"Find the newest resources, guides and code. Make the most out of your app using our SDK and APIs.","components.cookieManager.title":"Cookie Settings","components.cookieManager.text":"This website uses the following types of cookies; strictly necessary, performance, functional and marketing cookies. For specific information regarding how these cookies may impact your experience please read our <a href='/cookies'>Cookie Policy</a> and <a href='/privacy'>Privacy Policy</a>.","components.cookieManager.types.strict.label":"Strict","components.cookieManager.types.functional.label":"Functional","components.cookieManager.types.performance.label":"Performance","components.cookieManager.types.marketing.label":"Marketing","components.cookieManager.button":"Save Settings","components.search.query.placeholder":"Type your search","components.search.query.button":"Search","components.search.query.error":"Please insert some search terms","components.search.query.noResults":"No results found for your search terms","components.footer.copyright":"Notificare","components.footer.platform":"Platform Status","components.notificare.onBoarding.text":"Would you like to receive push notifications from our website?","components.notificare.onBoarding.cancelText":"No","components.notificare.onBoarding.acceptText":"Yes","shared.readMore":"Read more","shared.latestVersion":"Latest Version:","shared.jumpTo":"Jump to:","shared.sdkWarning":"These are deprecated or outdated SDK guides. Make sure you use the latest version of our libraries in order to benefit from all the new features, important bug fixes and security updates.","shared.guidesWarning":"You are viewing guides to a legacy interface that will be discontinued on January 1 2024. Please consider switching to the new interface.","shared.comingSoon":"Coming Soon"},"routed":false,"originalPath":"/sdk/v5/ios/push/advanced/notification-service-extension/","redirect":false,"redirectDefaultLanguageToRoot":false,"defaultLanguage":"en","fallbackLanguage":"","ignoredPaths":[]}}},
    "staticQueryHashes": ["1473005414","63159454"]}