How to implement an image carousel in OneSignal iOS push notifications using Swift.
iOS provides a UNNotificationContentExtension protocol as the entry point for a notification content app extension. This can be used to display a custom interface for your app’s notifications. This example guide explains how to use this for creating a carousel within an iOS notification.
Download the OSNotificationContentExtension from Github and replace the OSNotificationContentExtension in your Xcode Project with the same file from Github.You should see the following files added:
The code sample on the Github page has lines that are commented out which show debug positions and print statements to help identify any issues. Uncomment those lines and you should be able to see if the Notification Content Extension is being instantiated. If not, please check that you have not missed any steps in the setup process. If you continue to have issues, please reach out to support@onesignal.com
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OneSignal","description":"OneSignal is a platform for sending push notifications, emails, in-app messages, and SMS campaigns via a single API, Journey Builder, and a dashboard.","colors":{"primary":"#3A3DB3","light":"#E54B4D","dark":"#3A3DB3"},"logo":{"light":"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107","dark":"https://mintcdn.com/onesignal/s4WC_KzLxf8ornqq/logo/OneSignal-Logo-White.svg?fit=max\u0026auto=format\u0026n=s4WC_KzLxf8ornqq\u0026q=85\u0026s=2573a53b5aea961e18c82b3af8f31925"},"favicon":"https://mintcdn.com/onesignal/SGduBFHpiRdg5l6h/favicon.ico?fit=max\u0026auto=format\u0026n=SGduBFHpiRdg5l6h\u0026q=85\u0026s=c0a99fadc0553c658a83741c5611cef4","api":{"examples":{"languages":["curl","typescript","python","php","go","ruby","java","csharp","rust"],"autogenerate":true}},"navbar":{"links":[{"href":"mailto:support@onesignal.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.onesignal.com"}},"footer":{"socials":{"github":"https://github.com/OneSignal","linkedin":"https://linkedin.com/company/onesignal","youtube":"https://www.youtube.com/@onesignalofficial/playlists"}},"seo":{"metatags":{"apple-mobile-web-app-title":"OneSignal Docs"}},"fonts":{"family":"Nunito Sans"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"ga4":{"measurementId":"G-2DGWL0VYP5"},"posthog":{"apiKey":"phc_vZpvE0f5eyzcOt30FHer34yddVmNdo9kmlMVRBzLMtn","apiHost":"https://eu.i.posthog.com","sessionRecording":true}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"languages":[{"language":"en","href":"docs/en/home"},{"language":"cn","href":"docs/cn/home"},{"language":"ko","href":"docs/ko/home"},{"language":"ja","href":"docs/ja/home"},{"language":"tr","href":"docs/tr/home"},{"language":"pt-BR","href":"docs/pt-BR/home"},{"language":"es","href":"docs/es/home"},{"language":"fr","href":"docs/fr/home"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"onesignal","hasAudioNarration":false,"actualSubdomain":"onesignal","customDomains":["documentation.onesignal.com"],"gitSource":{"type":"github","owner":"onesignal","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae27970d56b3c07efab0978","collectionId":"6235cce9-b779-4b7f-8fb0-f4b3f7de838d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae27970d56b3c07efab0978"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae27970d56b3c07efab0978","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"en","tag":"User Guides","count":201},{"language":"es","tag":"Guías del Usuario","count":178},{"language":"fr","tag":"Guides utilisateur","count":178},{"language":"ja","tag":"ユーザーガイド","count":178},{"language":"ko","tag":"사용자 가이드","count":178},{"language":"pt-BR","tag":"Guia do Usuário","count":178},{"language":"tr","tag":"Kullanıcı Kılavuzları","count":178},{"language":"cn","tag":"用户指南","count":176},{"language":"en","tag":"Message channels","count":90},{"language":"es","tag":"Canales de mensajería","count":84},{"language":"fr","tag":"Canaux de messagerie","count":84},{"language":"ja","tag":"メッセージングチャネル","count":84},{"language":"ko","tag":"메시지 채널","count":84},{"language":"pt-BR","tag":"Canais de mensagem","count":84},{"language":"tr","tag":"Mesaj kanalları","count":84},{"language":"cn","tag":"消息渠道","count":83},{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"API reference","count":64},{"language":"en","tag":"Analytics \u0026 Integrations","count":53},{"language":"es","tag":"Analítica \u0026 Integraciones","count":52},{"language":"fr","tag":"Analyses et intégrations","count":52},{"language":"ja","tag":"分析 \u0026 統合","count":52},{"language":"ko","tag":"분석 \u0026 통합","count":52},{"language":"pt-BR","tag":"Análises \u0026 Integrações","count":52},{"language":"tr","tag":"Analitik ve Entegrasyonlar","count":52},{"language":"cn","tag":"分析和集成","count":51},{"language":"cn","tag":"开发者指南","count":48},{"language":"es","tag":"Guías del desarrollador","count":48},{"language":"fr","tag":"Guides développeur","count":48},{"language":"ja","tag":"開発者ガイド","count":48},{"language":"ko","tag":"개발자 가이드","count":48},{"language":"tr","tag":"Geliştirici Kılavuzları","count":48},{"language":"pt-BR","tag":"Guia de desenvolvedor","count":47},{"language":"en","tag":"Developer Guides","count":46},{"language":"en","tag":"Integrations","count":37},{"language":"es","tag":"Integraciones","count":37},{"language":"fr","tag":"Intégrations","count":37},{"language":"ja","tag":"統合","count":37},{"language":"ko","tag":"통합","count":37},{"language":"pt-BR","tag":"Integrações","count":37},{"language":"tr","tag":"Entegrasyonlar","count":37},{"language":"cn","tag":"集成","count":36},{"language":"en","tag":"Tutorials","count":35},{"language":"cn","tag":"推送通知","count":31},{"language":"cn","tag":"OneSignal 作为目的地","count":31},{"language":"en","tag":"Push","count":31},{"language":"en","tag":"OneSignal as destination","count":31},{"language":"es","tag":"Push notificaciones","count":31},{"language":"es","tag":"OneSignal como destino","count":31},{"language":"fr","tag":"Push","count":31},{"language":"fr","tag":"OneSignal comme destination","count":31},{"language":"ja","tag":"プッシュ通知","count":31},{"language":"ja","tag":"OneSignal as 宛先","count":31},{"language":"ko","tag":"푸시","count":31},{"language":"ko","tag":"OneSignal을 데이터 목적지로 사용","count":31},{"language":"pt-BR","tag":"Push notificações","count":31},{"language":"pt-BR","tag":"OneSignal como destino","count":31},{"language":"tr","tag":"Anlık bildirimler","count":31},{"language":"tr","tag":"OneSignal hedef","count":31},{"language":"cn","tag":"移动SDK","count":25},{"language":"en","tag":"Mobile SDKs","count":25},{"language":"es","tag":"SDKs móviles","count":25},{"language":"fr","tag":"SDK mobiles","count":25},{"language":"ja","tag":"モバイルSDK","count":25},{"language":"ko","tag":"모바일 SDKs","count":25},{"language":"pt-BR","tag":"SDKs móveis","count":25},{"language":"tr","tag":"Mobil SDK'lar","count":25},{"language":"cn","tag":"教程","count":24},{"language":"es","tag":"Tutoriales","count":24},{"language":"fr","tag":"Tutoriels","count":24},{"language":"ja","tag":"チュートリアル","count":24},{"language":"ko","tag":"튜토리얼","count":24},{"language":"pt-BR","tag":"Tutoriais","count":24},{"language":"tr","tag":"Eğitimler","count":24},{"language":"en","tag":"Email","count":19},{"language":"cn","tag":"移动SDK设置","count":18},{"language":"es","tag":"Configuración del SDK móvil","count":18},{"language":"fr","tag":"Configuration SDK mobile","count":18},{"language":"ja","tag":"モバイルSDKセットアップ","count":18},{"language":"ko","tag":"모바일 SDK 설정","count":18},{"language":"pt-BR","tag":"Configuração do SDK móvel","count":18},{"language":"tr","tag":"Mobil SDK kurulumu","count":18},{"language":"default","tag":"Messages","count":9},{"language":"default","tag":"Users","count":9},{"language":"default","tag":"Organization","count":9},{"language":"default","tag":"Journeys","count":8},{"language":"default","tag":"Deprecated","count":6},{"language":"default","tag":"Templates","count":6},{"language":"default","tag":"Subscriptions","count":6},{"language":"default","tag":"Segments","count":5}]},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"email":"support@onesignal.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"docs/en/ios-image-carousel-push-notifications","slug":"/docs/en/ios-image-carousel-push-notifications","pageMetadata":{"title":"iOS: Image Carousel Push Notifications","description":"How to implement an image carousel in OneSignal iOS push notifications using Swift.","keywords":["push notification carousel","image carousel iOS","notification content extension","UNNotificationContentExtension","OSNotificationContentExtension","OSNotificationCarousel","ios_category","multiple images in push","swipeable notification images","custom notification UI","comma separated image URLs","images additional data key","cannot upload multiple images","long press to expand notification","content extension not instantiated"],"href":"/docs/en/ios-image-carousel-push-notifications"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to implement an image carousel in OneSignal iOS push notifications using Swift.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Card,CodeBlock,CodeGroup,Frame,Heading,OptimizedImage,Tab,Tabs}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`iOS provides a `,_jsx(_components.a,{href:`https://developer.apple.com/documentation/usernotificationsui/unnotificationcontentextension?language=objc`,children:`UNNotificationContentExtension`}),` protocol as the entry point for a notification content app extension. This can be used to display a custom interface for your app’s notifications. This example guide explains how to use this for creating a carousel within an iOS notification.`]}),`\n`,_jsx(Frame,{caption:`Image showing a carousel in a push notification`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/geJ4PYn1YFXgiEih/images/push/carousel.gif?s=79e3d3f900d3154c99b6d959e05f7e33`,\"data-og-width\":`320`,width:`320`,\"data-og-height\":`463`,height:`463`,\"data-path\":`images/push/carousel.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})}),`\n`,_jsx(Heading,{level:`2`,id:`1-add-a-notification-content-extension`,children:`1. Add a notification content extension`}),`\n`,_jsx(Card,{img:`https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png?fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=80e43cac5c764bd0538169f9de8b6743`,horizontal:`true`,\"data-og-width\":`600`,width:`600`,\"data-og-height\":`315`,height:`315`,\"data-path\":`images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=605e3725b0127fc4786d74ed695f6591 280w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=d18c796cbccd2faccb25b6ec02644683 560w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=3fe14b9ff8e950ca78cc8b8f3c2b2dbf 840w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=5486b6afe6e089c597d48d777ee5b6ca 1100w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=d4b7ace40b60a58238b47a58271a2b72 1650w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/docs/00355f9-Screen_Shot_2020-11-30_at_9.32.26_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=ec5921567a0627618a579b5e6a649b6e 2500w`,children:_jsx(_components.p,{children:`In Xcode, select File > New > Target…`})}),`\n`,_jsx(Card,{img:`https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png?fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=1050faa9adf15303846a0cdee4cb0bab`,horizontal:`true`,\"data-og-width\":`600`,width:`600`,\"data-og-height\":`431`,height:`431`,\"data-path\":`images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=d584422bcba66249a19dcd9609e84078 280w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=78c2456e27825538d37713718420ff46 560w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=7c1f490d636642d03c5379ccef5fe8c6 840w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=7d9057964c9b76977e877ef672c873a1 1100w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=df41f699084f664d161001b129a4f92b 1650w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/efd0fde-Screen_Shot_2020-11-30_at_3.10.58_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=e54501c0ead5a42859425a740cc15ca5 2500w`,children:_jsx(_components.p,{children:`Select “Notification Content Extension”`})}),`\n`,_jsx(Card,{img:`https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png?fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=9779778bc953998e3e0ec96642d33e50`,horizontal:`true`,\"data-og-width\":`600`,width:`600`,\"data-og-height\":`429`,height:`429`,\"data-path\":`images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=22bb7eff6a62cd250ca96fae7f3ab06f 280w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=f8fce10d7d6cf0ff475d899b8c85f6ac 560w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=933afcecc40e229117e2b90c326e8d42 840w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=04a09d86abfb73c80cf90f90239454ab 1100w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=8149ce7057ab46cc63f83444a9ddded7 1650w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0a0fa6a-Screen_Shot_2020-11-30_at_6.44.46_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=e05c9e324a790787906df47df429e3a2 2500w`,children:_jsx(_components.p,{children:`Confirm the selection on the window that pops up`})}),`\n`,_jsx(Card,{img:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/ActivateContentExtension.png?fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=8e0cf29704f3e01163074be168c3a597`,horizontal:`true`,\"data-og-width\":`567`,width:`567`,\"data-og-height\":`409`,height:`409`,\"data-path\":`images/docs/ActivateContentExtension.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/ActivateContentExtension.png?w=280\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=c974e7e3e29184ae02c7031a1cf2e64a 280w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/ActivateContentExtension.png?w=560\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=b39168f34b7053497008e38f4f652e76 560w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/ActivateContentExtension.png?w=840\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=b9cf655d44af56c91292296c53e04ced 840w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/ActivateContentExtension.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=94bb3b40ae30ba89e9db6b59b0ca66cc 1100w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/ActivateContentExtension.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=ba6b51a9805330e308c90c8efc39bcc9 1650w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/ActivateContentExtension.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=4b60af5bfad346230ed56d07441c240a 2500w`,children:_jsx(_components.p,{children:`Select activate to debug`})}),`\n`,_jsx(Heading,{level:`2`,id:`2-add-code-to-your-app`,children:`2. Add code to your app`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://github.com/dombartenope/OSNotificationContentExtension`,children:`Download the OSNotificationContentExtension`}),` from Github and replace the `,_jsx(_components.code,{children:`OSNotificationContentExtension`}),` in your Xcode Project with the same file from Github.`]}),`\n`,_jsx(_components.p,{children:`You should see the following files added:`}),`\n`,_jsx(Frame,{caption:`Files under Content Extension`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png?fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=ab382c7011a4481ab5cc91ce6d1a09cd`,\"data-og-width\":`261`,width:`261`,\"data-og-height\":`125`,height:`125`,\"data-path\":`images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=b8299f43212ac6c0d0d6e7c32371a22d 280w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=5cecf3cc3c4d0aca3cd166383352a5ec 560w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=8a076b7cc352c967cc4c6c5fd0c12505 840w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=15bc4e94c31facc5513e0c081b1a2e6f 1100w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=75e81e299165f68e29fd9dfa9a01cb3b 1650w, https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0de83b8-Screen_Shot_2020-11-30_at_8.58.01_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6v_cVPknFpo5qSVB\u0026q=85\u0026s=f7c980ec3e595d4163c3e1b1b761855f 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`3-set-your-notification-category`,children:`3. Set your notification category`}),`\n`,_jsxs(_components.p,{children:[`This example `,_jsx(_components.a,{href:`https://developer.apple.com/documentation/usernotifications/declaring_your_actionable_notification_types`,children:`Declares The Actionable Notification Type`}),` within the AppDelegate.swift `,_jsx(_components.code,{children:`didFinishLaunchingWithOptions`}),`.`]}),`\n`,_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`Swift`,numberOfLines:`19`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` application`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` application`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: UIApplication, `}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`didFinishLaunchingWithOptions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` launchOptions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [UIApplication.LaunchOptionsKey: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Any`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` Bool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` //START Authorize OS Notification Carousel Category`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` #available`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`iOS`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 10.0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` options: UNAuthorizationOptions `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`alert`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` UNUserNotificationCenter.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`current`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`requestAuthorization`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: options) { (authorized, error) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` authorized {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` categoryIdentifier `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"OSNotificationCarousel\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` carouselNext `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` UNNotificationAction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`identifier`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"OSNotificationCarousel.next\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`title`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"👉\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [])`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` carouselPrevious `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` UNNotificationAction`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`identifier`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"OSNotificationCarousel.previous\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`title`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"👈\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [])`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` carouselCategory `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` UNNotificationCategory`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`identifier`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: categoryIdentifier, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`actions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [carouselNext, carouselPrevious], `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`intentIdentifiers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [], `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`options`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [])`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` UNUserNotificationCenter.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`current`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setNotificationCategories`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([carouselCategory])`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` //END Authorize OS Notification Carousel Category`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`2`,id:`4-send-your-push-notification`,children:`4. Send your push notification`}),`\n`,_jsxs(_components.p,{children:[`When `,_jsx(_components.a,{href:`/docs/en/push`,children:`Sending Push Messages`}),` you can set the iOS Category and custom Data.`]}),`\n`,_jsx(Heading,{level:`3`,id:`ios-category`,children:`iOS category`}),`\n`,_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`OSNotificationCarousel`}),` as the iOS Category:`]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Dashboard`,id:`dashboard`,children:[_jsxs(_components.p,{children:[`Set under “Platform Settings” > `,_jsx(_components.strong,{children:`Send to Apple iOS`}),` > “Category”`]}),_jsx(Frame,{caption:`iOS platform options on OneSignal dashboard`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/OSNotificationCarousel.png?fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=2e0ff19d9f383aae03d510a34fc2c7fe`,\"data-og-width\":`1101`,width:`1101`,\"data-og-height\":`848`,height:`848`,\"data-path\":`images/docs/OSNotificationCarousel.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/OSNotificationCarousel.png?w=280\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=5c656f9bd111cb765c0d5f3c91bd7ae1 280w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/OSNotificationCarousel.png?w=560\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=0f985d16334b9ad82813f1f100fbf1e4 560w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/OSNotificationCarousel.png?w=840\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=07e88d5d4dd1993413b7e40e80b122e9 840w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/OSNotificationCarousel.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=eb4cb751f72f73d63ab261d135657785 1100w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/OSNotificationCarousel.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=274bb462dcacd9333dbee8f6dfd8a72c 1650w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/OSNotificationCarousel.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=969a16ed5cf06b990d83e20dd6bd7392 2500w`})})]}),_jsx(Tab,{title:`API`,id:`api`,children:_jsxs(_components.p,{children:[`Set with the `,_jsx(_components.code,{children:`ios_category`}),` `,_jsx(_components.a,{href:`/reference/push-notification`,children:`API Parameter`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`custom-data`,children:`Custom data`}),`\n`,_jsx(_components.p,{children:`OneSignal doesn’t have an option to upload multiple images per notification.`}),`\n`,_jsxs(_components.p,{children:[`Instead you must list the Image URLs separated by a comma `,_jsx(_components.code,{children:`,`})]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Dashboard`,id:`dashboard-2`,children:[_jsx(_components.p,{children:`Set under “Advanced Settings” > “Additional Data”`}),_jsxs(_components.p,{children:[`For the “Key” set `,_jsx(_components.code,{children:`images`}),` and the “Value” set the list of comma separated URLs without quotes.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png?fit=max\u0026auto=format\u0026n=4HyuQPBpu-4xjmQC\u0026q=85\u0026s=1f4911116d4c3a944d1aa282d6566359`,\"data-og-width\":`635`,width:`635`,\"data-og-height\":`307`,height:`307`,\"data-path\":`images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=4HyuQPBpu-4xjmQC\u0026q=85\u0026s=d872b3769e9a7890eb8d690199cf8c23 280w, https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=4HyuQPBpu-4xjmQC\u0026q=85\u0026s=0e6b376628947a34b04a3e71034942d4 560w, https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=4HyuQPBpu-4xjmQC\u0026q=85\u0026s=51bd2ce5f403a8ea272df66d78104842 840w, https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=4HyuQPBpu-4xjmQC\u0026q=85\u0026s=5923b2ddaa147a0a32416d8ee254e78b 1100w, https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=4HyuQPBpu-4xjmQC\u0026q=85\u0026s=ae378d3f8843f82cd0ea3c1436a4a4e9 1650w, https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/d07200a-Screen_Shot_2020-11-30_at_9.19.59_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=4HyuQPBpu-4xjmQC\u0026q=85\u0026s=7e60241dd0f9e434eb51364cdeac6427 2500w`})}),_jsx(_components.p,{children:`Example, copy paste:`}),_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`text`,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://cdn.pixabay.com/photo/2015/12/01/20/28/road-1072823_960_720.jpg,https://cdn.pixabay.com/photo/2013/11/28/10/36/road-220058_960_720.jpg,https://cdn.pixabay.com/photo/2012/08/27/14/19/mountains-55067_960_720.png,https://cdn.pixabay.com/photo/2015/01/28/23/35/landscape-615429_960_720.jpg,https://cdn.pixabay.com/photo/2016/05/05/02/37/sunset-1373171_960_720.jpg`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})})]}),_jsxs(Tab,{title:`API`,id:`api-2`,children:[_jsxs(_components.p,{children:[`Use the `,_jsx(_components.code,{children:`data`}),` `,_jsx(_components.a,{href:`/reference/push-notification`,children:`API Parameter`}),` like this:`]}),_jsx(CodeGroup,{children:_jsx(CodeBlock,{filename:`json`,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`data: {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"images\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` : `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.pixabay.com/photo/2015/12/01/20/28/road-1072823_960_720.jpg,https://cdn.pixabay.com/photo/2013/11/28/10/36/road-220058_960_720.jpg,https://cdn.pixabay.com/photo/2012/08/27/14/19/mountains-55067_960_720.png,https://cdn.pixabay.com/photo/2015/01/28/23/35/landscape-615429_960_720.jpg,https://cdn.pixabay.com/photo/2016/05/05/02/37/sunset-1373171_960_720.jpg\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`send-the-push`,children:`Send the push`}),`\n`,_jsx(_components.p,{children:`Once you receive the push, you will need to long press or swipe left and click “View” to expand the notification depending on the iOS version.`}),`\n`,_jsx(Heading,{level:`3`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(_components.p,{children:[`The code sample on the Github page has lines that are commented out which show debug positions and print statements to help identify any issues. Uncomment those lines and you should be able to see if the Notification Content Extension is being instantiated. If not, please check that you have not missed any steps in the setup process. If you continue to have issues, please reach out to `,_jsx(_components.a,{href:`mailto:support@onesignal.com`,children:`support@onesignal.com`})]}),`\n`,_jsx(Heading,{level:`3`,id:`further-reading`,children:`Further reading`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://developer.apple.com/documentation/usernotifications/declaring_your_actionable_notification_types`,children:`Apple’s Docs to Declare Your Actionable Notification Types`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://medium.com/nsistanbul/carousel-notification-in-ios-5a1e8239d786`,children:`Helpful Medium Post by Ahmet Keskin`})}),`\n`]}),`\n`,_jsx(_components.hr,{})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"iOS: Image Carousel Push Notifications","description":"How to implement an image carousel in OneSignal iOS push notifications using Swift.","keywords":["push notification carousel","image carousel iOS","notification content extension","UNNotificationContentExtension","OSNotificationContentExtension","OSNotificationCarousel","ios_category","multiple images in push","swipeable notification images","custom notification UI","comma separated image URLs","images additional data key","cannot upload multiple images","long press to expand notification","content extension not instantiated"],"href":"/docs/en/ios-image-carousel-push-notifications"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Add a notification content extension","slug":"1-add-a-notification-content-extension","depth":2,"children":[]},{"title":"2. Add code to your app","slug":"2-add-code-to-your-app","depth":2,"children":[]},{"title":"3. Set your notification category","slug":"3-set-your-notification-category","depth":2,"children":[]},{"title":"4. Send your push notification","slug":"4-send-your-push-notification","depth":2,"children":[{"title":"iOS category","slug":"ios-category","depth":3,"children":[]},{"title":"Custom data","slug":"custom-data","depth":3,"children":[]},{"title":"Send the push","slug":"send-the-push","depth":3,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":3,"children":[]},{"title":"Further reading","slug":"further-reading","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/onesignal/e069c1b9f3157e14/hotjar-koala.js","/_mintlify/custom/onesignal/3e5d03885ab32f49/intercom.js","/_mintlify/custom/onesignal/dbb7af4794d1b586/munchkin-marketo.js"],"subdomain":"onesignal","siteName":"OneSignal","title":"iOS: Image Carousel Push Notifications - OneSignal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/ios-image-carousel-push-notifications","matchLevel":0},"cn":{"href":"/docs/cn/ios-image-carousel-push-notifications","matchLevel":1},"ko":{"href":"/docs/ko/ios-image-carousel-push-notifications","matchLevel":1},"ja":{"href":"/docs/ja/ios-image-carousel-push-notifications","matchLevel":1},"tr":{"href":"/docs/tr/ios-image-carousel-push-notifications","matchLevel":1},"pt-BR":{"href":"/docs/pt-BR/ios-image-carousel-push-notifications","matchLevel":1},"es":{"href":"/docs/es/ios-image-carousel-push-notifications","matchLevel":1},"fr":{"href":"/docs/fr/ios-image-carousel-push-notifications","matchLevel":1}}},"lastModified":"2026-03-02T17:31:49.711Z","originalFileLocation":"docs/en/ios-image-carousel-push-notifications.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How to implement an image carousel in OneSignal iOS push notifications using Swift.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OneSignal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"iOS: Image Carousel Push Notifications - OneSignal\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to implement an image carousel in OneSignal iOS push notifications using Swift.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneSignal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Engage+and+convert\u0026amp;title=iOS%3A+Image+Carousel+Push+Notifications\u0026amp;description=How+to+implement+an+image+carousel+in+OneSignal+iOS+push+notifications+using+Swift.\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=f4bbf2b0c55fa37fdadadbc9b24213ce21e13dc8a2c6343dbde58865d248b075\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"iOS: Image Carousel Push Notifications - OneSignal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to implement an image carousel in OneSignal iOS push notifications using Swift.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Engage+and+convert\u0026amp;title=iOS%3A+Image+Carousel+Push+Notifications\u0026amp;description=How+to+implement+an+image+carousel+in+OneSignal+iOS+push+notifications+using+Swift.\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=f4bbf2b0c55fa37fdadadbc9b24213ce21e13dc8a2c6343dbde58865d248b075\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OneSignal Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3A3DB3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/ios-image-carousel-push-notifications.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://documentation.onesignal.com/docs/cn/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://documentation.onesignal.com/docs/ko/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://documentation.onesignal.com/docs/ja/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://documentation.onesignal.com/docs/tr/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://documentation.onesignal.com/docs/pt-BR/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://documentation.onesignal.com/docs/es/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://documentation.onesignal.com/docs/fr/ios-image-carousel-push-notifications\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://documentation.onesignal.com/#organization\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107\"}},{\"@type\":\"WebSite\",\"@id\":\"https://documentation.onesignal.com#website\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications#webpage\",\"url\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications\",\"name\":\"iOS: Image Carousel Push Notifications\",\"description\":\"How to implement an image carousel in OneSignal iOS push notifications using Swift.\",\"dateModified\":\"2026-03-02T17:31:49.711Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Engage and convert\",\"item\":\"https://documentation.onesignal.com/docs/en/event-driven-journeys\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iOS: Image Carousel Push Notifications\",\"item\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications#article\",\"headline\":\"iOS: Image Carousel Push Notifications\",\"name\":\"iOS: Image Carousel Push Notifications\",\"description\":\"How to implement an image carousel in OneSignal iOS push notifications using Swift.\",\"url\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/en/ios-image-carousel-push-notifications#webpage\"},\"dateModified\":\"2026-03-02T17:31:49.711Z\",\"keywords\":\"push notification carousel, image carousel iOS, notification content extension, UNNotificationContentExtension, OSNotificationContentExtension, OSNotificationCarousel, ios_category, multiple images in push, swipeable notification images, custom notification UI, comma separated image URLs, images additional data key, cannot upload multiple images, long press to expand notification, content extension not instantiated\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"},\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OneSignal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OneSignal","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/docs/en/home"}]},{"tab":"User Guides","pages":[{"title":"User Guides","href":"/docs/en/quickstart-guide"}]},{"tab":"Developer Guides","pages":[{"title":"Developer Guides","href":"/docs/en/developers"}]},{"tab":"Tutorials","groups":[{"group":"Tutorials","pages":[{"title":"Tutorials \u0026 use cases","href":"/docs/en/tutorials"}]},{"group":"Industry strategies","pages":[{"title":"Mobile-first strategies","href":"/docs/en/mobile-first"},{"title":"Gaming strategies","href":"/docs/en/gaming-industry"},{"title":"Ecommerce strategies","href":"/docs/en/ecommerce-strategies"},{"title":"News and media strategies","href":"/docs/en/news-and-media-industry"},{"title":"Financial and fintech strategies","href":"/docs/en/financial-fintech-industry"}]},{"group":"Onboard new users","pages":[{"title":"Mobile-first lifecycle Journeys","href":"/docs/en/mobile-first-journeys"},{"title":"Welcome Journey: Mobile gaming","href":"/docs/en/welcome-journey-mobile-gaming"},{"title":"Category onboarding for news and media","href":"/docs/en/welcome-journey-news-media"},{"title":"Build a button-driven onboarding carousel","href":"/docs/en/in-app-onboarding-carousel-tutorial"},{"title":"Request location permissions with in-app messages","href":"/docs/en/location-opt-in-prompt"},{"title":"Onboard users with banner in-app messages","href":"/docs/en/example-create-a-tutorial"}]},{"group":"Engage and convert","pages":[{"title":"Event-driven Journeys","href":"/docs/en/event-driven-journeys"},{"title":"Abandoned cart tutorial","href":"/docs/en/abandoned-cart"},{"title":"Loyalty Journey","href":"/docs/en/loyalty-journey"},{"title":"Flash sale Journey","href":"/docs/en/flash-sale"},{"title":"Back-in-stock alerts","href":"/docs/en/back-in-stock-alerts"},{"title":"Location-based messages","description":"Segment users by country, GPS coordinates, or geofence and send location-triggered push notifications with OneSignal.","href":"/docs/en/location-triggered-event"},{"title":"iOS: Image Carousel Push Notifications","href":"/docs/en/ios-image-carousel-push-notifications"},{"title":"Social activity","description":"Send push, email, and SMS notifications for likes, follows, direct messages, and gaming events, using custom_data for backend-triggered alerts.","href":"/docs/en/social-activity"},{"title":"Create activity feed","href":"/docs/en/create-an-activity-feed"},{"title":"Create a survey to ask for feedback","href":"/docs/en/example-create-a-survey"}]},{"group":"Retain and re-engage","pages":[{"title":"Paid plan subscription renewal \u0026 expiry Journey","href":"/docs/en/paid-plan-renewal-expiry"},{"title":"Daily streak journey","href":"/docs/en/daily-streak"},{"title":"Get more app store reviews","href":"/docs/en/example-app-store-review"},{"title":"Target outdated app versions to encourage app updates","sidebarTitle":"App version update prompts","href":"/docs/en/app-version-update"},{"title":"Fallback messages: Ensuring delivery across channels","href":"/docs/en/push-fallback-method"}]},{"group":"Operational","pages":[{"title":"Transactional messages","href":"/docs/en/transactional-messages"},{"title":"Set up confirmed opt-in for email","href":"/docs/en/double-opt-in-email"},{"title":"Preference center","href":"/docs/en/preference-center"},{"title":"Booking confirmations","href":"/docs/en/booking-confirmations"},{"title":"Send verification, magic link, OTP, and double opt-in messages","href":"/docs/en/example-verification-magic-link-otp"},{"title":"Track topic interest for smarter targeting","href":"/docs/en/auto-segment-users-by-page-visit"},{"title":"Target certain Android manufacturers and devices","href":"/docs/en/example-target-certain-android-manufacturers-and-devices"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/rest-api-overview"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/changelog"}]},{"tab":"Customer Success Hub","pages":[{"title":"Customer Success Hub","href":"/docs/en/customer-success-hub"}]}],"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://onesignal.com/blog"},{"anchor":"GitHub","icon":"github","href":"https://github.com/OneSignal"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@onesignalofficial/playlists"}]}},{"language":"cn","pages":[{"title":"cn","href":"/docs/cn/ios-image-carousel-push-notifications"}]},{"language":"ko","pages":[{"title":"ko","href":"/docs/ko/ios-image-carousel-push-notifications"}]},{"language":"ja","pages":[{"title":"ja","href":"/docs/ja/ios-image-carousel-push-notifications"}]},{"language":"tr","pages":[{"title":"tr","href":"/docs/tr/ios-image-carousel-push-notifications"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/docs/pt-BR/ios-image-carousel-push-notifications"}]},{"language":"es","pages":[{"title":"es","href":"/docs/es/ios-image-carousel-push-notifications"}]},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/ios-image-carousel-push-notifications"}]}]},"title":"iOS: Image Carousel Push Notifications - OneSignal","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DYplxqhs.js","DynamicMarkdown-Cc6AuSHS.js","zoom-image-lightbox-BNnMwe0F.js","lightbox-handle-r17bVUz3.js"]}