Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.
Some Android manufacturers — including Samsung, Xiaomi, Huawei, Oppo, Vivo, and OnePlus — restrict background activity for non-system apps. When users swipe these apps away from the recents list, the OS force-stops the app and blocks push delivery until the user reopens it. See Android Force Stop for the underlying cause.Push delivery from OneSignal succeeds, but the device suppresses the notification. You can detect these devices from your Android app and trigger a OneSignal in-app message that walks the user through enabling the right settings.
This pattern applies only to Android apps. iOS and web do not have an equivalent OS-level restriction that requires user remediation.
In Messages > In-App > New In-App, build the message you want to show. The body should give users clear, copy-paste-friendly steps to allow background activity on their device.Set the audience to Subscribed Users with platform filter Android. Other audience filters work too, as long as the user is in the audience before a new session starts — otherwise the trigger will not fire. See the in-app trigger requirements.In Trigger, choose Custom trigger and set:
Key: device_manufacturer
Operator: is
Value: restricted
Custom trigger configured to fire when device_manufacturer is restricted
2
Detect the device manufacturer in your Android app.
Read android.os.Build.MANUFACTURER early in your app’s lifecycle — for example in Application.onCreate() or immediately after OneSignal initialization. If the value matches your list of restricted manufacturers, call addTrigger with the same key and value you set in the dashboard.
val restrictedManufacturers = setOf( "samsung", "huawei", "xiaomi", "oppo", "vivo", "oneplus", "honor", "realme", "meizu", "asus")if (Build.MANUFACTURER?.lowercase(Locale.ROOT) in restrictedManufacturers) { OneSignal.InAppMessages.addTrigger("device_manufacturer", "restricted")}
Keep the manufacturer list in remote config (Firebase Remote Config, your own backend, or feature flags) so you can update it without shipping a new app release. dontkillmyapp.com maintains a community-sourced list of OEMs with restrictive battery policies.
3
Point users to the correct settings.
Settings paths vary by manufacturer and OS version, so generic instructions break quickly. Two approaches that age well:
Recommended. Link to the manufacturer’s page on dontkillmyapp.com (for example, https://dontkillmyapp.com/samsung) from the in-app message CTA. The site has up-to-date, per-OEM walkthroughs in multiple languages.
Advanced. Deep-link to the Android battery optimization screen from your IAM click handler using Intent.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS. This skips the settings hunt entirely on most devices.
If you prefer to include settings copy directly in the message, scope it to the dominant manufacturer in your install base and refresh it when you see drop-off in delivery.
Example message copy for Samsung
Your device may not be receiving our notifications. To make sure you stay updated:Settings > Apps > [Your app] > Battery > Allow background activitySettings > Apps > [Your app] > Notifications > Allow notifications and verify all categories are on.
In-app editor preview of a Samsung-targeted settings message
4
Test on a target device.
Install a debug build on a Samsung (or other restricted-manufacturer) device.
Force-close and reopen the app to start a new session.
Confirm in logcat that addTrigger is being called with the expected key and value.
Samsung One UI 6.1 silently disables notification categories for many apps after install, which suppresses notifications even when the OS otherwise allows them. You can target this case with the same pattern by adding a second trigger and a second in-app message.
if (Build.MANUFACTURER.equals("samsung", ignoreCase = true)) { OneSignal.InAppMessages.addTrigger("samsung_category_check", "show")}
Configure a separate in-app message that explains how to re-enable categories at Settings > Notifications > Your app. See Android notification categories disabled for background on this issue.
The most common cause is calling addTrigger after the user is already past the start of their session. In-app messages evaluate triggers when a session begins. Call addTrigger early in your app launch flow — before any user interaction — or instruct the user to relaunch the app.A second common cause is the user being excluded from the message audience. Confirm the message audience includes the test user’s subscription and platform.
By default, every launch where the trigger matches will fire the message. To limit frequency, configure display frequency on the in-app message (for example, “Show only once”).
No. iOS does not allow third-party apps to be force-stopped by the OS or by user swipe, so the underlying problem does not exist. You do not need to ship this pattern on iOS.
Does this work on React Native, Flutter, or Cordova?
Yes. The addTrigger API is identical across supported SDKs. To read the device manufacturer, use a platform package such as react-native-device-info (getManufacturer()) or device_info_plus (AndroidDeviceInfo.manufacturer), then call OneSignal.InAppMessages.addTrigger("device_manufacturer", "restricted") when the value matches your list.
No. The OneSignal SDK does not expose Build.MANUFACTURER directly. You read it from the Android Build class in your own code and pass the result to addTrigger.
Trigger state is local to the SDK and is not a user-level property, so it does not appear in the OneSignal dashboard. To confirm it ran, add a log statement next to your addTrigger call, then watch logcat or check whether the IAM displayed for the test user.
Diagnose Force Stop, disabled categories, Doze mode, and other reasons Android delivery succeeds but the user sees nothing.
In-app triggers
Audience and trigger requirements, including the session-start rule that catches most setup mistakes.
In-app messages setup
Build the message itself in the OneSignal dashboard, including audience, display options, and frequency.
Mobile SDK reference: addTrigger
Full cross-platform reference for addTrigger, addTriggers, removeTrigger, and clearTriggers.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OneSignal Documentation","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":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee76d2161a823262d5e93f","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"en","tag":"User Guides","count":203},{"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":"en","tag":"Developer Guides","count":47},{"language":"pt-BR","tag":"Guia de desenvolvedor","count":47},{"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":"en","tag":"Mobile SDKs","count":26},{"language":"cn","tag":"移动SDK","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":"Mobile SDK setup","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":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"docs/en/example-target-certain-android-manufacturers-and-devices","slug":"/docs/en/example-target-certain-android-manufacturers-and-devices","pageMetadata":{"title":"Target certain Android manufacturers and devices","description":"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.","keywords":["android push notifications","samsung notification categories","force stop android","dontkillmyapp","device manufacturer targeting","in-app messages","addTrigger"],"href":"/docs/en/example-target-certain-android-manufacturers-and-devices"},"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: \"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.\"\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`,blockquote:`blockquote`,code:`code`,em:`em`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,Card,CodeBlock,CodeGroup,Columns,Frame,Heading,Note,OptimizedImage,Step,Steps,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Some Android manufacturers — including Samsung, Xiaomi, Huawei, Oppo, Vivo, and OnePlus — restrict background activity for non-system apps. When users swipe these apps away from the recents list, the OS force-stops the app and blocks push delivery until the user reopens it. See `,_jsx(_components.a,{href:`/docs/en/notifications-show-successful-but-are-not-being-shown#android-force-stop`,children:`Android Force Stop`}),` for the underlying cause.`]}),`\n`,_jsx(_components.p,{children:`Push delivery from OneSignal succeeds, but the device suppresses the notification. You can detect these devices from your Android app and trigger a OneSignal in-app message that walks the user through enabling the right settings.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`This pattern applies only to Android apps. iOS and web do not have an equivalent OS-level restriction that requires user remediation.`})}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`An Android app integrated with the OneSignal SDK V5 or later. See `,_jsx(_components.a,{href:`/docs/en/mobile-sdk-setup`,children:`Mobile SDK setup`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`An in-app message you can build in the dashboard. See `,_jsx(_components.a,{href:`/docs/en/in-app-messages-setup`,children:`In-app messages setup`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Familiarity with `,_jsx(_components.a,{href:`/docs/en/iam-triggers`,children:`in-app triggers`}),` and the `,_jsxs(_components.a,{href:`/docs/en/mobile-sdk-reference#in-app-messages`,children:[_jsx(_components.code,{children:`addTrigger`}),` method`]}),`.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-the-message-and-trigger`,children:`Set up the message and trigger`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create the in-app message in the dashboard.`,children:[_jsxs(_components.p,{children:[`In `,_jsx(_components.strong,{children:`Messages > In-App > New In-App`}),`, build the message you want to show. The body should give users clear, copy-paste-friendly steps to allow background activity on their device.`]}),_jsxs(_components.p,{children:[`Set the audience to `,_jsx(_components.strong,{children:`Subscribed Users`}),` with platform filter `,_jsx(_components.strong,{children:`Android`}),`. Other audience filters work too, as long as the user is in the audience `,_jsx(_components.em,{children:`before`}),` a new session starts — otherwise the trigger will not fire. See the `,_jsx(_components.a,{href:`/docs/en/iam-triggers#important-in-app-trigger-requirements`,children:`in-app trigger requirements`}),`.`]}),_jsxs(_components.p,{children:[`In `,_jsx(_components.strong,{children:`Trigger`}),`, choose `,_jsx(_components.strong,{children:`Custom trigger`}),` and set:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Key`}),`: `,_jsx(_components.code,{children:`device_manufacturer`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Operator`}),`: `,_jsx(_components.code,{children:`is`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Value`}),`: `,_jsx(_components.code,{children:`restricted`})]}),`\n`]}),_jsx(Frame,{caption:`Custom trigger configured to fire when device_manufacturer is restricted`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f18b86e-iam-target-devices-add-trigger.png?fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=6e0131c435a16b3a010207c8c3b9f24b`,alt:`OneSignal dashboard in-app message trigger panel with key device_manufacturer set to value restricted`,\"data-og-width\":`1279`,width:`1279`,\"data-og-height\":`356`,height:`356`,\"data-path\":`images/docs/f18b86e-iam-target-devices-add-trigger.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f18b86e-iam-target-devices-add-trigger.png?w=280\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=cbebb8c7a61c4332bebce2615fab52c4 280w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f18b86e-iam-target-devices-add-trigger.png?w=560\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=8b5f13eca8374098065b63783742a01f 560w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f18b86e-iam-target-devices-add-trigger.png?w=840\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=3e25a005b7e7797f30295b10df8d0787 840w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f18b86e-iam-target-devices-add-trigger.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=01a0aa0bef1e90f4d0e76a245a547535 1100w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f18b86e-iam-target-devices-add-trigger.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=bbed35579e5401c83da92459d9c115e2 1650w, https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f18b86e-iam-target-devices-add-trigger.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Xl2NHJvxakrK4JbL\u0026q=85\u0026s=051e054a1c3226285139e8ad663b7aa0 2500w`})})]}),_jsxs(Step,{title:`Detect the device manufacturer in your Android app.`,children:[_jsxs(_components.p,{children:[`Read `,_jsx(_components.code,{children:`android.os.Build.MANUFACTURER`}),` early in your app’s lifecycle — for example in `,_jsx(_components.code,{children:`Application.onCreate()`}),` or immediately after OneSignal initialization. If the value matches your list of restricted manufacturers, call `,_jsx(_components.code,{children:`addTrigger`}),` with the same key and value you set in the dashboard.`]}),_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Kotlin`,numberOfLines:`8`,language:`kotlin`,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:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`val`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` restrictedManufacturers `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` setOf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"samsung\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"huawei\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"xiaomi\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"oppo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vivo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"oneplus\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"honor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realme\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"meizu\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"asus\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\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:` (Build.MANUFACTURER?.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`lowercase`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(Locale.ROOT) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`in`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` restrictedManufacturers) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` OneSignal.InAppMessages.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`addTrigger`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"device_manufacturer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"restricted\"`}),_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(CodeBlock,{filename:`Java`,numberOfLines:`12`,language:`java`,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:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`Set`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`restrictedManufacturers`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:` HashSet`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c>(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Arrays`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`asList`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"samsung\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"huawei\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"xiaomi\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"oppo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vivo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"oneplus\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"honor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realme\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"meizu\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"asus\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` manufacturer`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MANUFACTURER`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` null`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` ?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`MANUFACTURER`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toLowerCase`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Locale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ROOT`}),_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\":`#C586C0`},children:` :`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\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:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`restrictedManufacturers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`contains`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(manufacturer)) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` OneSignal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInAppMessages`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`addTrigger`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"device_manufacturer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"restricted\"`}),_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(Tip,{children:_jsxs(_components.p,{children:[`Keep the manufacturer list in remote config (Firebase Remote Config, your own backend, or feature flags) so you can update it without shipping a new app release. `,_jsx(_components.a,{href:`https://dontkillmyapp.com/`,children:`dontkillmyapp.com`}),` maintains a community-sourced list of OEMs with restrictive battery policies.`]})})]}),_jsxs(Step,{title:`Point users to the correct settings.`,children:[_jsx(_components.p,{children:`Settings paths vary by manufacturer and OS version, so generic instructions break quickly. Two approaches that age well:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Recommended.`}),` Link to the manufacturer’s page on `,_jsx(_components.a,{href:`https://dontkillmyapp.com/`,children:`dontkillmyapp.com`}),` (for example, `,_jsx(_components.code,{children:`https://dontkillmyapp.com/samsung`}),`) from the in-app message CTA. The site has up-to-date, per-OEM walkthroughs in multiple languages.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Advanced.`}),` Deep-link to the Android battery optimization screen from your IAM click handler using `,_jsx(_components.code,{children:`Intent.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS`}),`. This skips the settings hunt entirely on most devices.`]}),`\n`]}),_jsx(_components.p,{children:`If you prefer to include settings copy directly in the message, scope it to the dominant manufacturer in your install base and refresh it when you see drop-off in delivery.`}),_jsxs(Accordion,{title:`Example message copy for Samsung`,id:`example-message-copy-for-samsung`,children:[_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:`Your device may not be receiving our notifications. To make sure you stay updated:`}),`\n`,_jsxs(_components.p,{children:[`Settings > Apps > [Your app] > Battery > `,_jsx(_components.strong,{children:`Allow background activity`})]}),`\n`,_jsxs(_components.p,{children:[`Settings > Apps > [Your app] > Notifications > `,_jsx(_components.strong,{children:`Allow notifications`}),` and verify all categories are on.`]}),`\n`]}),_jsx(Frame,{caption:`In-app editor preview of a Samsung-targeted settings message`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/79a09e7-iam-target-certain-android-devices.png?fit=max\u0026auto=format\u0026n=jBdBk5XvQR5eKOks\u0026q=85\u0026s=23713a3d356dd3f1893d5d51e913f6cc`,alt:`OneSignal in-app message editor previewing a warning that the device may not be receiving notifications, with Samsung-specific settings steps`,\"data-og-width\":`1922`,width:`1922`,\"data-og-height\":`1661`,height:`1661`,\"data-path\":`images/docs/79a09e7-iam-target-certain-android-devices.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/79a09e7-iam-target-certain-android-devices.png?w=280\u0026fit=max\u0026auto=format\u0026n=jBdBk5XvQR5eKOks\u0026q=85\u0026s=20c342a7b9f9df1989f870f57c1d617b 280w, https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/79a09e7-iam-target-certain-android-devices.png?w=560\u0026fit=max\u0026auto=format\u0026n=jBdBk5XvQR5eKOks\u0026q=85\u0026s=f4fdf9a2d7edbd4e6963a3bf5667cc43 560w, https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/79a09e7-iam-target-certain-android-devices.png?w=840\u0026fit=max\u0026auto=format\u0026n=jBdBk5XvQR5eKOks\u0026q=85\u0026s=7af4fa2852b0082c6881f1c945c56b28 840w, https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/79a09e7-iam-target-certain-android-devices.png?w=1100\u0026fit=max\u0026auto=format\u0026n=jBdBk5XvQR5eKOks\u0026q=85\u0026s=4290b8700929f1ba0859155efce13d9a 1100w, https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/79a09e7-iam-target-certain-android-devices.png?w=1650\u0026fit=max\u0026auto=format\u0026n=jBdBk5XvQR5eKOks\u0026q=85\u0026s=7ac9735f03925bdbd4f2b75a194c71c8 1650w, https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/79a09e7-iam-target-certain-android-devices.png?w=2500\u0026fit=max\u0026auto=format\u0026n=jBdBk5XvQR5eKOks\u0026q=85\u0026s=9c2e4bf64212c2744db62506a8468651 2500w`})})]})]}),_jsx(Step,{title:`Test on a target device.`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Install a debug build on a Samsung (or other restricted-manufacturer) device.`}),`\n`,_jsx(_components.li,{children:`Force-close and reopen the app to start a new session.`}),`\n`,_jsxs(_components.li,{children:[`Confirm in logcat that `,_jsx(_components.code,{children:`addTrigger`}),` is being called with the expected key and value.`]}),`\n`,_jsxs(_components.li,{children:[`Verify the in-app message displays. If it does not, see `,_jsx(_components.a,{href:`/docs/en/in-app-message-troubleshooting`,children:`In-app message troubleshooting`}),`.`]}),`\n`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`detect-samsung-notification-category-restrictions`,children:`Detect Samsung notification category restrictions`}),`\n`,_jsx(_components.p,{children:`Samsung One UI 6.1 silently disables notification categories for many apps after install, which suppresses notifications even when the OS otherwise allows them. You can target this case with the same pattern by adding a second trigger and a second in-app message.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`kotlin`,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:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`3`,children:[_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:` (Build.MANUFACTURER.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`equals`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"samsung\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, ignoreCase `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`}),_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:` OneSignal.InAppMessages.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`addTrigger`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"samsung_category_check\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"show\"`}),_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`]})})}),`\n`,_jsxs(_components.p,{children:[`Configure a separate in-app message that explains how to re-enable categories at `,_jsx(_components.strong,{children:`Settings > Notifications > Your app`}),`. See `,_jsx(_components.a,{href:`/docs/en/notifications-show-successful-but-are-not-being-shown#android-notification-categories-disabled`,children:`Android notification categories disabled`}),` for background on this issue.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsx(Heading,{level:`3`,id:`why-isn’t-my-in-app-message-firing`,children:`Why isn’t my in-app message firing?`}),`\n`,_jsxs(_components.p,{children:[`The most common cause is calling `,_jsx(_components.code,{children:`addTrigger`}),` after the user is already past the start of their session. In-app messages evaluate triggers when a session begins. Call `,_jsx(_components.code,{children:`addTrigger`}),` early in your app launch flow — before any user interaction — or instruct the user to relaunch the app.`]}),`\n`,_jsx(_components.p,{children:`A second common cause is the user being excluded from the message audience. Confirm the message audience includes the test user’s subscription and platform.`}),`\n`,_jsx(Heading,{level:`3`,id:`will-the-message-show-on-every-app-launch`,children:`Will the message show on every app launch?`}),`\n`,_jsxs(_components.p,{children:[`By default, every launch where the trigger matches will fire the message. To limit frequency, configure `,_jsx(_components.a,{href:`/docs/en/in-app-messages-setup#display-frequency`,children:`display frequency`}),` on the in-app message (for example, “Show only once”).`]}),`\n`,_jsx(Heading,{level:`3`,id:`does-this-work-on-ios`,children:`Does this work on iOS?`}),`\n`,_jsx(_components.p,{children:`No. iOS does not allow third-party apps to be force-stopped by the OS or by user swipe, so the underlying problem does not exist. You do not need to ship this pattern on iOS.`}),`\n`,_jsx(Heading,{level:`3`,id:`does-this-work-on-react-native-flutter-or-cordova`,children:`Does this work on React Native, Flutter, or Cordova?`}),`\n`,_jsxs(_components.p,{children:[`Yes. The `,_jsx(_components.code,{children:`addTrigger`}),` API is identical across `,_jsx(_components.a,{href:`/docs/en/mobile-sdk-reference#in-app-messages`,children:`supported SDKs`}),`. To read the device manufacturer, use a platform package such as `,_jsx(_components.code,{children:`react-native-device-info`}),` (`,_jsx(_components.code,{children:`getManufacturer()`}),`) or `,_jsx(_components.code,{children:`device_info_plus`}),` (`,_jsx(_components.code,{children:`AndroidDeviceInfo.manufacturer`}),`), then call `,_jsx(_components.code,{children:`OneSignal.InAppMessages.addTrigger(\"device_manufacturer\", \"restricted\")`}),` when the value matches your list.`]}),`\n`,_jsx(Heading,{level:`3`,id:`can-onesignal-detect-the-manufacturer-for-me`,children:`Can OneSignal detect the manufacturer for me?`}),`\n`,_jsxs(_components.p,{children:[`No. The OneSignal SDK does not expose `,_jsx(_components.code,{children:`Build.MANUFACTURER`}),` directly. You read it from the Android `,_jsx(_components.code,{children:`Build`}),` class in your own code and pass the result to `,_jsx(_components.code,{children:`addTrigger`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`where-can-i-see-if-the-trigger-is-firing`,children:`Where can I see if the trigger is firing?`}),`\n`,_jsxs(_components.p,{children:[`Trigger state is local to the SDK and is not a user-level property, so it does not appear in the OneSignal dashboard. To confirm it ran, add a log statement next to your `,_jsx(_components.code,{children:`addTrigger`}),` call, then watch logcat or check whether the IAM displayed for the test user.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`related-pages`,children:`Related pages`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Notifications successful but not shown`,icon:`bell-slash`,href:`/docs/en/notifications-show-successful-but-are-not-being-shown`,children:_jsx(_components.p,{children:`Diagnose Force Stop, disabled categories, Doze mode, and other reasons Android delivery succeeds but the user sees nothing.`})}),_jsx(Card,{title:`In-app triggers`,icon:`bolt`,href:`/docs/en/iam-triggers`,children:_jsx(_components.p,{children:`Audience and trigger requirements, including the session-start rule that catches most setup mistakes.`})}),_jsx(Card,{title:`In-app messages setup`,icon:`message`,href:`/docs/en/in-app-messages-setup`,children:_jsx(_components.p,{children:`Build the message itself in the OneSignal dashboard, including audience, display options, and frequency.`})}),_jsx(Card,{title:`Mobile SDK reference: addTrigger`,icon:`code`,href:`/docs/en/mobile-sdk-reference#in-app-messages`,children:_jsxs(_components.p,{children:[`Full cross-platform reference for `,_jsx(_components.code,{children:`addTrigger`}),`, `,_jsx(_components.code,{children:`addTriggers`}),`, `,_jsx(_components.code,{children:`removeTrigger`}),`, and `,_jsx(_components.code,{children:`clearTriggers`}),`.`]})})]})]})}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":"Target certain Android manufacturers and devices","description":"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.","keywords":["android push notifications","samsung notification categories","force stop android","dontkillmyapp","device manufacturer targeting","in-app messages","addTrigger"],"href":"/docs/en/example-target-certain-android-manufacturers-and-devices"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Set up the message and trigger","slug":"set-up-the-message-and-trigger","depth":2,"children":[]},{"title":"Detect Samsung notification category restrictions","slug":"detect-samsung-notification-category-restrictions","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[{"title":"Why isn’t my in-app message firing?","slug":"why-isn’t-my-in-app-message-firing","depth":3,"children":[]},{"title":"Will the message show on every app launch?","slug":"will-the-message-show-on-every-app-launch","depth":3,"children":[]},{"title":"Does this work on iOS?","slug":"does-this-work-on-ios","depth":3,"children":[]},{"title":"Does this work on React Native, Flutter, or Cordova?","slug":"does-this-work-on-react-native-flutter-or-cordova","depth":3,"children":[]},{"title":"Can OneSignal detect the manufacturer for me?","slug":"can-onesignal-detect-the-manufacturer-for-me","depth":3,"children":[]},{"title":"Where can I see if the trigger is firing?","slug":"where-can-i-see-if-the-trigger-is-firing","depth":3,"children":[]}]},{"title":"Related pages","slug":"related-pages","depth":2,"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 Documentation","title":"Target certain Android manufacturers and devices - OneSignal Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/example-target-certain-android-manufacturers-and-devices","matchLevel":0},"cn":{"href":"/docs/cn/example-target-certain-android-manufacturers-and-devices","matchLevel":1},"ko":{"href":"/docs/ko/example-target-certain-android-manufacturers-and-devices","matchLevel":1},"ja":{"href":"/docs/ja/example-target-certain-android-manufacturers-and-devices","matchLevel":1},"tr":{"href":"/docs/tr/example-target-certain-android-manufacturers-and-devices","matchLevel":1},"pt-BR":{"href":"/docs/pt-BR/example-target-certain-android-manufacturers-and-devices","matchLevel":1},"es":{"href":"/docs/es/example-target-certain-android-manufacturers-and-devices","matchLevel":1},"fr":{"href":"/docs/fr/example-target-certain-android-manufacturers-and-devices","matchLevel":1}}},"lastModified":"2026-05-21T23:07:21.357Z","originalFileLocation":"docs/en/example-target-certain-android-manufacturers-and-devices.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=\"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OneSignal Documentation\">\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=\"Target certain Android manufacturers and devices - OneSignal Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneSignal Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://onesignal.mintlify.site/_mintlify/api/og/v2?division=Operational\u0026amp;title=Target+certain+Android+manufacturers+and+devices\u0026amp;description=Use+OneSignal+in-app+messages+to+coach+Android+users+on+Samsung%2C+Xiaomi%2C+and+similar+devices+that+block+push+delivery+when+apps+are+force-stopped+or+have+notifi\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=dda7494c059a597b5bae9bdd3b13a2803ce73dea83b4ce4b6a0bb3bbdeb4a525\">\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=\"Target certain Android manufacturers and devices - OneSignal Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.site/_mintlify/api/og/v2?division=Operational\u0026amp;title=Target+certain+Android+manufacturers+and+devices\u0026amp;description=Use+OneSignal+in-app+messages+to+coach+Android+users+on+Samsung%2C+Xiaomi%2C+and+similar+devices+that+block+push+delivery+when+apps+are+force-stopped+or+have+notifi\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=dda7494c059a597b5bae9bdd3b13a2803ce73dea83b4ce4b6a0bb3bbdeb4a525\">\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/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/example-target-certain-android-manufacturers-and-devices.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://documentation.onesignal.com/docs/cn/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://documentation.onesignal.com/docs/ko/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://documentation.onesignal.com/docs/ja/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://documentation.onesignal.com/docs/tr/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://documentation.onesignal.com/docs/pt-BR/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://documentation.onesignal.com/docs/es/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://documentation.onesignal.com/docs/fr/example-target-certain-android-manufacturers-and-devices\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://documentation.onesignal.com/#organization\",\"name\":\"OneSignal Documentation\",\"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 Documentation\",\"url\":\"https://documentation.onesignal.com\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices#webpage\",\"url\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices\",\"name\":\"Target certain Android manufacturers and devices\",\"description\":\"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.\",\"dateModified\":\"2026-05-21T23:07:21.357Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Operational\",\"item\":\"https://documentation.onesignal.com/docs/en/transactional-messages\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Target certain Android manufacturers and devices\",\"item\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices#article\",\"headline\":\"Target certain Android manufacturers and devices\",\"name\":\"Target certain Android manufacturers and devices\",\"description\":\"Use OneSignal in-app messages to coach Android users on Samsung, Xiaomi, and similar devices that block push delivery when apps are force-stopped or have notification categories disabled.\",\"url\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/en/example-target-certain-android-manufacturers-and-devices#webpage\"},\"dateModified\":\"2026-05-21T23:07:21.357Z\",\"keywords\":\"android push notifications, samsung notification categories, force stop android, dontkillmyapp, device manufacturer targeting, in-app messages, addTrigger\",\"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 Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OneSignal Documentation","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","href":"/docs/en/location-triggered-event"},{"title":"iOS: Image Carousel Push Notifications","href":"/docs/en/ios-image-carousel-push-notifications"},{"title":"Social activity","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","description":"Tag users based on the pages they visit and the page they subscribe to push notifications from, then segment for targeted campaigns.","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/example-target-certain-android-manufacturers-and-devices"}]},{"language":"ko","pages":[{"title":"ko","href":"/docs/ko/example-target-certain-android-manufacturers-and-devices"}]},{"language":"ja","pages":[{"title":"ja","href":"/docs/ja/example-target-certain-android-manufacturers-and-devices"}]},{"language":"tr","pages":[{"title":"tr","href":"/docs/tr/example-target-certain-android-manufacturers-and-devices"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/docs/pt-BR/example-target-certain-android-manufacturers-and-devices"}]},{"language":"es","pages":[{"title":"es","href":"/docs/es/example-target-certain-android-manufacturers-and-devices"}]},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/example-target-certain-android-manufacturers-and-devices"}]}]},"basePath":"","title":"Target certain Android manufacturers and devices - OneSignal Documentation","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["07c022d89b","a74be98ba7","a9bb46feb3"],"chunks":["Frame-DvzxQbD0.js","DynamicMarkdown-mQG_iQiE.js","zoom-image-lightbox-BFbLClTf.js","lightbox-handle-r17bVUz3.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}