Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.
Easily request location access from users by using a OneSignal in-app message as a soft pre-prompt before showing the required native system-level location permission dialog. This improves opt-in rates and gives you more control over when and how to ask. Alternatively, you can directly trigger the system prompt using our Mobile SDK location methods.
Add a button or image with a clear call to action (e.g., “Enable Location”).
2
Add a click action
In the options:
Click Add Click Action
Select Location Permission Prompt
When clicked, OneSignal will trigger the native, required system-level location prompt.If location is already enabled, the message won’t show to avoid unnecessary prompts.
Both Android and iOS limit how frequently system-level prompts can appear. Using this soft pre-prompt helps avoid those limitations and allows for repeat attempts if needed.
Image showing in-app blocks and ability to add click actions
Example setting: show up to 5 times, with a 4-week gap between each attemptThis allows monthly reminders for up to 5 months, striking a balance between persistence and user experience.
Example scheduling configuration for repeat prompts.
Always explain the benefit of location access to users.
Use segmentation or triggers to avoid asking at a bad time.
Pre-prompts increase opt-in rates and avoid operating system limits.
Ensure location permissions are correctly configured in your app before triggering the in-app message.
You will start to see location points being tracked in your Users and Subscriptions pages.Create Location-triggered messages.
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.4094","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/location-opt-in-prompt","slug":"/docs/en/location-opt-in-prompt","pageMetadata":{"title":"Request location permissions with in-app messages","description":"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.","keywords":["location permissions","in-app message","location tracking","OneSignal location","mobile SDK","iOS location prompt","Android location prompt","soft prompt","location-based notifications"],"href":"/docs/en/location-opt-in-prompt"},"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: \"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.\"\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`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Check,Frame,Heading,Info,OptimizedImage,Step,Steps}=_components;if(!Check)_missingMdxReference(`Check`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Easily request location access from users by using a OneSignal in-app message as a soft pre-prompt before showing the required native system-level location permission dialog. This improves opt-in rates and gives you more control over when and how to ask. Alternatively, you can directly trigger the system prompt using our `,_jsx(_components.a,{href:`/docs/en/mobile-sdk-reference#location`,children:`Mobile SDK location methods`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`requirements`,children:`Requirements`}),`\n`,_jsx(_components.p,{children:`Before creating your in-app message:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Add location tracking permissions to your app (for both Android and iOS).`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Refer to our `,_jsx(_components.a,{href:`/docs/en/mobile-sdk-reference#location`,children:`Mobile SDK location reference`}),` for platform-specific setup instructions.`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`Enable location sharing with OneSignal in your app code.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`create-your-message`,children:`Create your message`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create your message`,children:_jsxs(_components.p,{children:[`In the OneSignal dashboard, go to: `,_jsx(_components.strong,{children:`Messages > In-App > New In-App`})]})}),_jsx(Step,{title:`Audience`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`If all users should see the prompt, select `,_jsx(_components.strong,{children:`Show to all users`}),`.`]}),`\n`,_jsx(_components.li,{children:`Otherwise, target a specific Segment.`}),`\n`]})}),_jsxs(Step,{title:`Message design`,children:[_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Clearly explain why location access benefits the user. E.g., “Enable location to receive relevant local updates.”`}),`\n`,_jsx(_components.li,{children:`Be concise but specific to increase opt-in likelihood.`}),`\n`]}),_jsx(Frame,{caption:`Image showing in-app blocks and ability to add click actions alongside preview`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d79589d-iam-setup.png?fit=max\u0026auto=format\u0026n=Z6xkXGfmy814If53\u0026q=85\u0026s=dfc599957a14fae1da44feaca697cc8d`,\"data-og-width\":`1922`,width:`1922`,\"data-og-height\":`1650`,height:`1650`,\"data-path\":`images/docs/d79589d-iam-setup.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d79589d-iam-setup.png?w=280\u0026fit=max\u0026auto=format\u0026n=Z6xkXGfmy814If53\u0026q=85\u0026s=d4dd42ea01e8c3ddccfe57b9a222878e 280w, https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d79589d-iam-setup.png?w=560\u0026fit=max\u0026auto=format\u0026n=Z6xkXGfmy814If53\u0026q=85\u0026s=83cc7db669c38793848525406da24e86 560w, https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d79589d-iam-setup.png?w=840\u0026fit=max\u0026auto=format\u0026n=Z6xkXGfmy814If53\u0026q=85\u0026s=88f59f9d7d6fc8284a099b3b03ec25af 840w, https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d79589d-iam-setup.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Z6xkXGfmy814If53\u0026q=85\u0026s=71d54ad90f3a0410287d969df583055d 1100w, https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d79589d-iam-setup.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Z6xkXGfmy814If53\u0026q=85\u0026s=a03dd1df24c718ed15d0e89aeac0946c 1650w, https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/d79589d-iam-setup.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Z6xkXGfmy814If53\u0026q=85\u0026s=1c5b0ec452473d466c3b24ddfc2935a3 2500w`})})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`add-the-location-permission-prompt-click-action`,children:`Add the Location Permission Prompt Click Action`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add a button or image`,children:_jsx(_components.p,{children:`Add a button or image with a clear call to action (e.g., “Enable Location”).`})}),_jsxs(Step,{title:`Add a click action`,children:[_jsx(_components.p,{children:`In the options:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add Click Action`})]}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Location Permission Prompt`})]}),`\n`]}),_jsx(_components.p,{children:`When clicked, OneSignal will trigger the native, required system-level location prompt.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`If location is already enabled, the message won’t show to avoid unnecessary prompts.`})}),_jsx(Info,{children:_jsx(_components.p,{children:`Both Android and iOS limit how frequently system-level prompts can appear. Using this soft pre-prompt helps avoid those limitations and allows for repeat attempts if needed.`})}),_jsx(Frame,{caption:`Image showing in-app blocks and ability to add click actions`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3ee94da-iam-setup-add-buttons.png?fit=max\u0026auto=format\u0026n=_KaXe4GQkxsEfa17\u0026q=85\u0026s=bea5041690d177a6b2c74b970bac178d`,\"data-og-width\":`561`,width:`561`,\"data-og-height\":`767`,height:`767`,\"data-path\":`images/docs/3ee94da-iam-setup-add-buttons.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3ee94da-iam-setup-add-buttons.png?w=280\u0026fit=max\u0026auto=format\u0026n=_KaXe4GQkxsEfa17\u0026q=85\u0026s=4dfa54440d17d330f24de40ede0cf237 280w, https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3ee94da-iam-setup-add-buttons.png?w=560\u0026fit=max\u0026auto=format\u0026n=_KaXe4GQkxsEfa17\u0026q=85\u0026s=931092275a192d75cb84355eaa9d42c6 560w, https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3ee94da-iam-setup-add-buttons.png?w=840\u0026fit=max\u0026auto=format\u0026n=_KaXe4GQkxsEfa17\u0026q=85\u0026s=ea134345ad00ce18563b56a0dcdf0a9f 840w, https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3ee94da-iam-setup-add-buttons.png?w=1100\u0026fit=max\u0026auto=format\u0026n=_KaXe4GQkxsEfa17\u0026q=85\u0026s=2a165eecf5913d37eb2665bb101e8487 1100w, https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3ee94da-iam-setup-add-buttons.png?w=1650\u0026fit=max\u0026auto=format\u0026n=_KaXe4GQkxsEfa17\u0026q=85\u0026s=2f076342c71b1503226caab936ffa572 1650w, https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3ee94da-iam-setup-add-buttons.png?w=2500\u0026fit=max\u0026auto=format\u0026n=_KaXe4GQkxsEfa17\u0026q=85\u0026s=eff754c093db7d7d56d621f28815bae4 2500w`})})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`trigger-the-in-app-message`,children:`Trigger the in-app message`}),`\n`,_jsx(_components.p,{children:`You can control when and how the prompt is shown.`}),`\n`,_jsx(Heading,{level:`3`,id:`option-1-time-based-triggers`,children:`Option 1: Time-based triggers`}),`\n`,_jsx(_components.p,{children:`Show the message after a user has been in the app for a set amount of time (e.g., after 30 seconds).`}),`\n`,_jsx(Frame,{caption:`Image showing session in-app trigger.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png?fit=max\u0026auto=format\u0026n=KSCNwSpBCNSQ8xdF\u0026q=85\u0026s=aa5c748b14350c0c35165194daf0b567`,\"data-og-width\":`1566`,width:`1566`,\"data-og-height\":`688`,height:`688`,\"data-path\":`images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=KSCNwSpBCNSQ8xdF\u0026q=85\u0026s=d393a167e970caed446efe057218e78a 280w, https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=KSCNwSpBCNSQ8xdF\u0026q=85\u0026s=ccdaa0118ea7a9fc0213ceb630b56a3c 560w, https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=KSCNwSpBCNSQ8xdF\u0026q=85\u0026s=b3fa6fe9e7c5eaf58cfac4a55858531e 840w, https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=KSCNwSpBCNSQ8xdF\u0026q=85\u0026s=f0477adf311131562e3ab84894a1dec3 1100w, https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=KSCNwSpBCNSQ8xdF\u0026q=85\u0026s=9223bba3ab468281fda68509b3f214fd 1650w, https://mintcdn.com/onesignal/KSCNwSpBCNSQ8xdF/images/docs/fb26c9cc44f0ff633869613177c204987850f8a45de908f153387b6c18211e3d-Screenshot_2025-04-03_at_6.34.31_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=KSCNwSpBCNSQ8xdF\u0026q=85\u0026s=e3d75f025a55cdf66438685b146733f0 2500w`})}),`\n`,_jsx(Heading,{level:`3`,id:`option-2-programmatic-triggers`,children:`Option 2: Programmatic triggers`}),`\n`,_jsx(_components.p,{children:`Control exactly when the prompt appears via the SDK:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add the trigger code to the app.`,children:_jsxs(_components.p,{children:[`Use our SDK’s `,_jsxs(_components.a,{href:`/docs/en/mobile-sdk-reference#in-app-messages`,children:[_jsx(_components.code,{children:`addTrigger`}),` method`]}),` to set a key like `,_jsx(_components.code,{children:`location_prompt`}),` and value like `,_jsx(_components.code,{children:`true`}),`. Then call this whenever you want inside your app.`]})}),_jsxs(Step,{title:`Add the trigger to the message`,children:[_jsxs(_components.p,{children:[`Set the same trigger key (`,_jsx(_components.code,{children:`location_prompt`}),`) and value (`,_jsx(_components.code,{children:`true`}),`) in your in-app message settings.`]}),_jsx(Frame,{caption:`Image showing programmatic In-app trigger.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png?fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=aa22c76661dc1cbf6ddac693fd471a1a`,\"data-og-width\":`1566`,width:`1566`,\"data-og-height\":`742`,height:`742`,\"data-path\":`images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=f209eb8491cfb22344f1eaa5cb8c33ea 280w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=3e90d503300f51cb4b094291cdd660e8 560w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=0d7c76dfce9b4a91a8acbe0818b08733 840w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=6aca94ca757265aa140101eeefc00f98 1100w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=0ae19047a34b83d51d1e91a88004a63c 1650w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/a1073246e17c826da317ef34f1fb4b4171e924a2de9f199cef9c154a0470c9aa-Screenshot_2025-04-03_at_6.35.33_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=ad8d55a524d9bb30c9446d6660da2d76 2500w`})})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`set-the-message-frequency`,children:`Set the message frequency`}),`\n`,_jsx(_components.p,{children:`To avoid spamming users:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Choose `,_jsx(_components.strong,{children:`Multiple times`})]}),`\n`,_jsx(_components.li,{children:`Set a number of times to show the message`}),`\n`,_jsx(_components.li,{children:`Set a gap between each attempt`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Example setting: show up to 5 times, with a 4-week gap between each attempt`}),`\n`,_jsx(_components.p,{children:`This allows monthly reminders for up to 5 months, striking a balance between persistence and user experience.`}),`\n`,_jsx(Frame,{caption:`Example scheduling configuration for repeat prompts.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png?fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=00f77c150cdb1f667aef561d09cd5998`,\"data-og-width\":`1566`,width:`1566`,\"data-og-height\":`722`,height:`722`,\"data-path\":`images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png?w=280\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=94e8398d00281f4f511ded8794c95695 280w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png?w=560\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=99f253e8b4af0c3d4a72aea8323611f5 560w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png?w=840\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=0f887b06b22dc465519b08598ff4cafe 840w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=f751fb102afada2c177e37ef92301839 1100w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=a95ec9ca3424ab260bacb344fa77c85f 1650w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/9e87626b6069826d65baa160acf278f9ada4724ea1a4155b63a2bd3be9e1fc64-Screenshot_2025-04-03_at_7.02.24_PM.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=29e094fa6fcaabb16baae26ace811008 2500w`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`best-practices`,children:`Best Practices`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Always explain the benefit of location access to users.`}),`\n`,_jsx(_components.li,{children:`Use segmentation or triggers to avoid asking at a bad time.`}),`\n`,_jsx(_components.li,{children:`Pre-prompts increase opt-in rates and avoid operating system limits.`}),`\n`,_jsx(_components.li,{children:`Ensure location permissions are correctly configured in your app before triggering the in-app message.`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsxs(Check,{children:[_jsx(_components.p,{children:`You will start to see location points being tracked in your Users and Subscriptions pages.`}),_jsxs(_components.p,{children:[`Create `,_jsx(_components.a,{href:`/docs/en/location-triggered-event`,children:`Location-triggered messages`}),`.`]})]}),`\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":"Request location permissions with in-app messages","description":"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.","keywords":["location permissions","in-app message","location tracking","OneSignal location","mobile SDK","iOS location prompt","Android location prompt","soft prompt","location-based notifications"],"href":"/docs/en/location-opt-in-prompt"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Requirements","slug":"requirements","depth":2,"children":[]},{"title":"Create your message","slug":"create-your-message","depth":2,"children":[]},{"title":"Add the Location Permission Prompt Click Action","slug":"add-the-location-permission-prompt-click-action","depth":2,"children":[]},{"title":"Trigger the in-app message","slug":"trigger-the-in-app-message","depth":2,"children":[{"title":"Option 1: Time-based triggers","slug":"option-1-time-based-triggers","depth":3,"children":[]},{"title":"Option 2: Programmatic triggers","slug":"option-2-programmatic-triggers","depth":3,"children":[]}]},{"title":"Set the message frequency","slug":"set-the-message-frequency","depth":2,"children":[]},{"title":"Best Practices","slug":"best-practices","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":"Request location permissions with in-app messages - OneSignal Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/location-opt-in-prompt","matchLevel":0},"cn":{"href":"/docs/cn/location-opt-in-prompt","matchLevel":1},"ko":{"href":"/docs/ko/location-opt-in-prompt","matchLevel":1},"ja":{"href":"/docs/ja/location-opt-in-prompt","matchLevel":1},"tr":{"href":"/docs/tr/location-opt-in-prompt","matchLevel":1},"pt-BR":{"href":"/docs/pt-BR/location-opt-in-prompt","matchLevel":1},"es":{"href":"/docs/es/location-opt-in-prompt","matchLevel":1},"fr":{"href":"/docs/fr/location-opt-in-prompt","matchLevel":1}}},"lastModified":"2026-01-28T10:01:58.306Z","originalFileLocation":"docs/en/location-opt-in-prompt.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=\"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.\">\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=\"Request location permissions with in-app messages - OneSignal Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.\">\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/location-opt-in-prompt\">\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=Onboard+new+users\u0026amp;title=Request+location+permissions+with+in-app+messages\u0026amp;description=Guide+users+to+enable+location+tracking+in+your+mobile+app+using+a+soft+pre-prompt+in+OneSignal+before+triggering+the+native+Android+or+iOS+location+permission+\u0026amp;theme=12e705baa88dc8cc6d7a9877\u0026amp;signature=483ae473c17f86b5c0addffa4e5318c4436c62bf47ec12ad96ac62346612652b\">\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=\"Request location permissions with in-app messages - OneSignal Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.site/_mintlify/api/og/v2?division=Onboard+new+users\u0026amp;title=Request+location+permissions+with+in-app+messages\u0026amp;description=Guide+users+to+enable+location+tracking+in+your+mobile+app+using+a+soft+pre-prompt+in+OneSignal+before+triggering+the+native+Android+or+iOS+location+permission+\u0026amp;theme=12e705baa88dc8cc6d7a9877\u0026amp;signature=483ae473c17f86b5c0addffa4e5318c4436c62bf47ec12ad96ac62346612652b\">\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/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/location-opt-in-prompt.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://documentation.onesignal.com/docs/cn/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://documentation.onesignal.com/docs/ko/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://documentation.onesignal.com/docs/ja/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://documentation.onesignal.com/docs/tr/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://documentation.onesignal.com/docs/pt-BR/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://documentation.onesignal.com/docs/es/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://documentation.onesignal.com/docs/fr/location-opt-in-prompt\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt\">\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/location-opt-in-prompt#webpage\",\"url\":\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt\",\"name\":\"Request location permissions with in-app messages\",\"description\":\"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.\",\"dateModified\":\"2026-01-28T10:01:58.306Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Onboard new users\",\"item\":\"https://documentation.onesignal.com/docs/en/mobile-first-journeys\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Request location permissions with in-app messages\",\"item\":\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt#article\",\"headline\":\"Request location permissions with in-app messages\",\"name\":\"Request location permissions with in-app messages\",\"description\":\"Guide users to enable location tracking in your mobile app using a soft pre-prompt in OneSignal before triggering the native Android or iOS location permission request.\",\"url\":\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/en/location-opt-in-prompt#webpage\"},\"dateModified\":\"2026-01-28T10:01:58.306Z\",\"keywords\":\"location permissions, in-app message, location tracking, OneSignal location, mobile SDK, iOS location prompt, Android location prompt, soft prompt, location-based notifications\",\"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","description":"Create a multi-step onboarding flow using HTML In-App Messages with button navigation and automatic dismissal.","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","description":"Guide users with contextual top and bottom banner in-app messages that don't block your app UI.","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","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/location-opt-in-prompt"}]},{"language":"ko","pages":[{"title":"ko","href":"/docs/ko/location-opt-in-prompt"}]},{"language":"ja","pages":[{"title":"ja","href":"/docs/ja/location-opt-in-prompt"}]},{"language":"tr","pages":[{"title":"tr","href":"/docs/tr/location-opt-in-prompt"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/docs/pt-BR/location-opt-in-prompt"}]},{"language":"es","pages":[{"title":"es","href":"/docs/es/location-opt-in-prompt"}]},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/location-opt-in-prompt"}]}]},"basePath":"","title":"Request location permissions with in-app messages - OneSignal Documentation","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-5Xwp92K7.js","DynamicMarkdown-BoyYAA8K.js","zoom-image-lightbox-DkE6VzSN.js","lightbox-handle-r17bVUz3.js"]}