{"id":22947,"date":"2022-05-05T12:37:48","date_gmt":"2022-05-05T12:37:48","guid":{"rendered":"https:\/\/refiner.io\/docs\/?post_type=knowledgebase&#038;p=22947"},"modified":"2026-03-16T09:45:17","modified_gmt":"2026-03-16T09:45:17","slug":"mobile-sdk-reference","status":"publish","type":"knowledgebase","link":"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/","title":{"rendered":"Mobile SDK Reference"},"content":{"rendered":"\n\n\n<h2 class=\"wp-block-heading\" id=\"init\">Initialize the SDK<\/h2>\n\n\n\n<p>As a first you&#8217;ll need to install our SDK in your mobile app. You can find detailed installation methods directly in the Github code repositories.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios\" target=\"_blank\" rel=\"noreferrer noopener\">iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android\" target=\"_blank\" rel=\"noreferrer noopener\">Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native\">React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter\" target=\"_blank\" rel=\"noreferrer noopener\">Flutter<\/a><\/li>\n<\/ul>\n\n\n\n<p>Each repositories also include a sample application showing you how to load and initialize the client. <\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Right after loading the SDK, you&#8217;ll need to initialize the client by providing your Refiner environment ID. You can find the ID under &#8220;Settings &gt; Mobile SDK&#8221; in the Refiner dashboard.<\/p>\n\n\n\n<p>You can also activate a debug mode during development. When activated, all communication with our backend server is getting logged.<\/p>\n\n\n\n<p>All Mobile SDKs provide the same set of methods which you can use to identify users, track user behaviour, or launch surveys ad-hoc. <\/p>\n\n\n\n<p>Below we explain what each method does and how you can use it. Please consult the SKD specific documentation for the syntax and code examples.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Identify &amp; track users<\/h2>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"identify\">Identify user<\/h3>\n\n\n\n<p>All users of your app need to be identified with a unique identifier using the &#8220;Identify User&#8221; method.<\/p>\n\n\n\n<p>If possible, we recommend to identify your users with an ID that you are also using in other tools (your user database, email marketing tools, etc.). You can also choose to identify users with their device ID if your app doesn&#8217;t require users to sign in.<\/p>\n\n\n\n<p>Next to a unique identifier, you can also provide additional user traits. The provided user traits can be used to segment users in your Refiner account and create custom target audiences for your surveys. You can also use our API to provide the same user traits through a backend integration.<\/p>\n\n\n\n<p>Refiner has a couple of&nbsp;<a href=\"https:\/\/refiner.io\/docs\/kb\/data-index\/user-traits\/#reserved\">reserved fields<\/a>&nbsp;you should be aware of. These fields can&#8217;t be overwritten or have a certain behaviour attached to them.<\/p>\n\n\n\n<p>You can find examples on how to identify your users for each SDK version here:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios#identify-user\" target=\"_blank\" rel=\"noreferrer noopener\">Identify users on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#identify-user\" target=\"_blank\" rel=\"noreferrer noopener\">Identify users on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native#identify-user\" target=\"_blank\" rel=\"noreferrer noopener\">Identify users on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#identify-user\" target=\"_blank\" rel=\"noreferrer noopener\">Identify users on Flutter<\/a><\/li>\n<\/ul>\n\n\n\n<p>When a user logs out from your app or changes user accounts, you can call the &#8220;Reset User&#8221; method.<\/p>\n\n\n\n<p>If you are using our multi-language surveys feature, you can provide a &#8220;locale&#8221; string to show surveys in a specific language.<\/p>\n\n\n\n<p>Lastly, you can provide a <a href=\"https:\/\/refiner.io\/docs\/kb\/settings\/identity-verification\/\">Identity Verification<\/a> signature for increased level of security in a production environment.<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"session\">Start session<\/h3>\n\n\n\n<p>The start time of the  current user session can be used as the reference time in the <a href=\"https:\/\/refiner.io\/docs\/kb\/in-product-surveys\/trigger-events\/#time-delay\">Time Delay<\/a> and <a href=\"https:\/\/refiner.io\/docs\/kb\/in-product-surveys\/trigger-events\/#tracked-event\">Tracked Event<\/a> survey trigger.<\/p>\n\n\n\n<p>We try to automatically detect when a user starts a new session in your application. A new user session is detected when a user returns to your app after at least one hour of inactivity. <\/p>\n\n\n\n<p>You can choose inform Refiner that a new session started with the <em>startSession<\/em> method as shown below. You can call this method for example right after a user logs in to your application.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios?tab=readme-ov-file#start-user-session\" target=\"_blank\" rel=\"noreferrer noopener\">Start session on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android?tab=readme-ov-file#start-user-session\">Start session on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native\/tree\/main?tab=readme-ov-file#start-user-session\">Start session on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter\/tree\/main?tab=readme-ov-file#start-user-session\">Start session on Flutter<\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"track-events\">Track event<\/h3>\n\n\n\n<p>You can track whenever a user performs an important key action in your app (log-in, purchase, &#8230;). <a href=\"https:\/\/refiner.io\/docs\/kb\/segmentation\/tracking-user-events\/\">User event tracking<\/a> can be used to created <a href=\"https:\/\/refiner.io\/docs\/kb\/concepts\/segments\/\">User Segments<\/a> and <a href=\"https:\/\/refiner.io\/docs\/kb\/widgets\/target-audience\/\">Target Audiences<\/a> in Refiner.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios#track-event\" target=\"_blank\" rel=\"noreferrer noopener\">Track event on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#track-event\" target=\"_blank\" rel=\"noreferrer noopener\">Track event on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native#track-event\" target=\"_blank\" rel=\"noreferrer noopener\">Track event on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#track-event\" target=\"_blank\" rel=\"noreferrer noopener\">Track event on Flutter<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"track-screen\">Track screen<\/h3>\n\n\n\n<p>Whenever your user navigates to a specific screen in your app, you can use the &#8220;Track Screen&#8221; method to surface that information to Refiner. <\/p>\n\n\n\n<p>Tracking screens will allow you to launch surveys in specific areas in your app. In the Refiner dashboard, you can create a set of screen rules for each survey which determines on which screens a survey should be launched.<\/p>\n\n\n\n<p>You can choose screen names freely and you don&#8217;t need to systematically track each screen. We recommend to track screens on which you might want to show a survey one day.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios#track-screen\" target=\"_blank\" rel=\"noreferrer noopener\">Track screen on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#track-screen\" target=\"_blank\" rel=\"noreferrer noopener\">Track screen on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native#track-screen\" target=\"_blank\" rel=\"noreferrer noopener\">Track screen on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#track-screen\" target=\"_blank\" rel=\"noreferrer noopener\">Track screen on Flutter<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Advanced options<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"attach\">Add data to response<\/h3>\n\n\n\n<p>Next to providing user traits, it is also possible to attach contextual data to survey responses using the &#8220;addToResponse&#8221; method.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\">Attach contextual data on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android\/blob\/main\/README.md#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\">Attach contextual data on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native\/blob\/main\/README.md#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\">Attach contextual data on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\">Attach contextual data on Flutter<\/a><\/li>\n<\/ul>\n\n\n\n<p>Please note that common information like the the current screen a user is on, their language, etc. can also be attached to survey responses using our built-in <a href=\"https:\/\/refiner.io\/docs\/kb\/data-index\/data-settings\/#metadata\">metadata collection<\/a> option.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ping\">Ping server<\/h3>\n\n\n\n<p>Depending on your setup, you might want to initiate regular checks for surveys that are scheduled for the current user. For example when you are using time based <a href=\"https:\/\/refiner.io\/docs\/kb\/in-product-surveys\/trigger-events\/\">trigger events<\/a>, when using our <a href=\"https:\/\/refiner.io\/docs\/kb\/in-product-surveys\/follow-up-mode\/\">Follow-Up Mode<\/a>, or when a target audience is based on user data received by our backend API.<\/p>\n\n\n\n<p>The <em>ping<\/em> method provides an easy way to perform such checks. You can call the Ping method at key moments in a user&#8217;s journey, such as when the app is re-opened, or when the user performs a specific action.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios#ping\" target=\"_blank\" rel=\"noreferrer noopener\">Ping on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#ping\" target=\"_blank\" rel=\"noreferrer noopener\">Ping on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native#ping\" target=\"_blank\" rel=\"noreferrer noopener\">Ping on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#ping\" target=\"_blank\" rel=\"noreferrer noopener\">Ping on Flutter<\/a><\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"show-form\">Show survey programmatically<\/h3>\n\n\n\n<p>Sometimes you might want to show a survey programmatically, directly from your application\u2019s code, instead of relying on targeting rules defined in the Refiner dashboard. The mobile SDK exposes a &#8220;Show Form&#8221; method that allows you to do exactly this.<\/p>\n\n\n\n<p>Please make sure that your survey is using the &#8220;Manual&#8221; trigger event in &#8220;Targeting&#8221; section of the survey editor.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios\/blob\/main\/README.md#show-form\" target=\"_blank\" rel=\"noreferrer noopener\">Show form ad-hoc on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android\/blob\/main\/README.md#show-form\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#show-form\" target=\"_blank\" rel=\"noreferrer noopener\">Show form ad-hoc on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native\/blob\/main\/README.md#show-form\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native#show-form\" target=\"_blank\" rel=\"noreferrer noopener\">Show form ad-hoc on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#show-form\" target=\"_blank\" rel=\"noreferrer noopener\">Show form ad-hoc on Flutter<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"set-user\">Deferred user identification<\/h3>\n\n\n\n<p>The &#8220;Set User&#8221; method acts as an alternative to the &#8220;Identify User&#8221; method described above.<\/p>\n\n\n\n<p>In contrast to the <em>Identify User<\/em> method, the <em>Set User<\/em> method does not immediately create a user object in your Refiner account. The provided user Id and traits are kept locally in your app and no data is communicated to our servers at first. Only when the user performs a meaningful action in your app (e.g. <em>Track Event<\/em> or <em>Track Screen<\/em> is executed) will a user object be created in Refiner. Provided user traits will be attached to the user object when a survey is shown.<\/p>\n\n\n\n<p>The purpose of this alternative method is provide a way to identify users locally when the SDK is initialised but keep the number of tracked users in your Refiner account to a minimum.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios?tab=readme-ov-file#set-user\" target=\"_blank\" rel=\"noreferrer noopener\">Set User on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#attach-contextual-data\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android?tab=readme-ov-file#set-user\" target=\"_blank\" rel=\"noreferrer noopener\">Set User Android<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"set-project\">Disable &amp; enable client<\/h3>\n\n\n\n<p>You can instruct the SDK to stop querying our servers and prevent any surveys from being displayed.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios\/tree\/main?tab=readme-ov-file#disable--enable-client\" target=\"_blank\" rel=\"noreferrer noopener\">Disable &amp; enable client on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android\/tree\/main?tab=readme-ov-file#disable--enable-client\" target=\"_blank\" rel=\"noreferrer noopener\">Disable &amp; enable client on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native?tab=readme-ov-file#disable--enable-client\" target=\"_blank\" rel=\"noreferrer noopener\">Disable &amp; enable client on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter\/tree\/main?tab=readme-ov-file#disable--enable-client\" target=\"_blank\" rel=\"noreferrer noopener\">Disable &amp; enable client on Flutter<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"set-project\">Change environment ID<\/h3>\n\n\n\n<p>This method allows you to dynamically change the <a href=\"https:\/\/refiner.io\/docs\/kb\/account-settings\/environments\/\">Refiner environment<\/a> of your app during runtime. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios#set-project\" target=\"_blank\" rel=\"noreferrer noopener\">Set project on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android\/blob\/main\/README.md#show-form\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android#set-project\" target=\"_blank\" rel=\"noreferrer noopener\">Set project on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native\/blob\/main\/README.md#show-form\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native#set-project\" target=\"_blank\" rel=\"noreferrer noopener\">Set project on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#set-project\" target=\"_blank\" rel=\"noreferrer noopener\">Set project on Flutter<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"callbacks\">Callback methods<\/h3>\n\n\n\n<p>Registering callback functions allows you to execute code at specific moments in the lifecycle of a survey. Our SDK let you register the following callbacks:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td><strong>Method<\/strong><\/td><td><strong>Description<\/strong><\/td><\/tr><tr><td><em>onBeforeShow<\/em><\/td><td>Gets called right before a survey is supposed to be shown.<\/td><\/tr><tr><td><em>onNavigation<\/em><\/td><td>Gets called for each step when the user responds to questions or navigates through the survey.<\/td><\/tr><tr><td><em>onShow<\/em><\/td><td>Gets called when a survey widget becomes visible to your user.<\/td><\/tr><tr><td><em>onClose<\/em><\/td><td>Gets called when the survey widgets disappears from the screen.<\/td><\/tr><tr><td><em>onDismiss<\/em><\/td><td>Gets called when the user dismissed a survey by clicking on the \u201cx\u201d in the top right corner.<\/td><\/tr><tr><td><em>onComplete<\/em><\/td><td>Gets called when the user completed (submitted) the entire survey.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>To register callbacks, please refer to the following platform specific documentation:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-ios\/blob\/main\/README.md#register-callback-functions\" target=\"_blank\" rel=\"noreferrer noopener\">Register callbacks on iOS<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android\/blob\/main\/README.md#show-form\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-android\/blob\/main\/README.md#register-callback-functions\" target=\"_blank\" rel=\"noreferrer noopener\">Register callbacks on Android<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native\/blob\/main\/README.md#show-form\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-react-native\/blob\/main\/README.md#register-callback-functions\" target=\"_blank\" rel=\"noreferrer noopener\">Register callbacks on React-Native<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/refiner-io\/mobile-sdk-flutter#register-callback-functions\" target=\"_blank\" rel=\"noreferrer noopener\">Register callbacks on Flutter<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Initialize the SDK As a first you&#8217;ll need to install our SDK in your mobile app. You can find detailed installation methods directly in the Github code repositories. Each repositories also include a sample application showing you how to load and initialize the client. Right after loading the SDK, you&#8217;ll need to initialize the client [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","template":"","knowledgebase_tag":[],"class_list":["post-22947","knowledgebase","type-knowledgebase","status-publish","hentry","knowledgebase_cat-mobile-sdk"],"acf":[],"featured_image_urls_v2":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":"","ab-block-post-grid-landscape":"","ab-block-post-grid-square":"","gb-block-post-grid-landscape":"","gb-block-post-grid-square":""},"post_excerpt_stackable_v2":"<p>Initialize the SDK As a first you&#8217;ll need to install our SDK in your mobile app. You can find detailed installation methods directly in the Github code repositories. iOS Android React-Native Flutter Each repositories also include a sample application showing you how to load and initialize the client. Right after loading the SDK, you&#8217;ll need to initialize the client by providing your Refiner environment ID. You can find the ID under &#8220;Settings &gt; Mobile SDK&#8221; in the Refiner dashboard. You can also activate a debug mode during development. When activated, all communication with our backend server is getting logged. All&hellip;<\/p>\n","category_list_v2":"","author_info_v2":{"name":"Moritz Dausinger","url":"https:\/\/refiner.io\/docs\/author\/user\/"},"comments_num_v2":"0 comments","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mobile SDK Reference<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mobile SDK Reference\" \/>\n<meta property=\"og:description\" content=\"Initialize the SDK As a first you&#8217;ll need to install our SDK in your mobile app. You can find detailed installation methods directly in the Github code repositories. Each repositories also include a sample application showing you how to load and initialize the client. Right after loading the SDK, you&#8217;ll need to initialize the client [...]Read More...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/\" \/>\n<meta property=\"og:site_name\" content=\"Refiner Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-16T09:45:17+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/\",\"url\":\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/\",\"name\":\"Mobile SDK Reference\",\"isPartOf\":{\"@id\":\"https:\/\/refiner.io\/docs\/#website\"},\"datePublished\":\"2022-05-05T12:37:48+00:00\",\"dateModified\":\"2026-03-16T09:45:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/refiner.io\/docs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mobile SDK Reference\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/refiner.io\/docs\/#website\",\"url\":\"https:\/\/refiner.io\/docs\/\",\"name\":\"Refiner Documentation\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/refiner.io\/docs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/refiner.io\/docs\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/refiner.io\/docs\/#organization\",\"name\":\"Refiner Documentation\",\"url\":\"https:\/\/refiner.io\/docs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png\",\"contentUrl\":\"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png\",\"width\":400,\"height\":61,\"caption\":\"Refiner Documentation\"},\"image\":{\"@id\":\"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mobile SDK Reference","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/","og_locale":"en_US","og_type":"article","og_title":"Mobile SDK Reference","og_description":"Initialize the SDK As a first you&#8217;ll need to install our SDK in your mobile app. You can find detailed installation methods directly in the Github code repositories. Each repositories also include a sample application showing you how to load and initialize the client. Right after loading the SDK, you&#8217;ll need to initialize the client [...]Read More...","og_url":"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/","og_site_name":"Refiner Documentation","article_modified_time":"2026-03-16T09:45:17+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/","url":"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/","name":"Mobile SDK Reference","isPartOf":{"@id":"https:\/\/refiner.io\/docs\/#website"},"datePublished":"2022-05-05T12:37:48+00:00","dateModified":"2026-03-16T09:45:17+00:00","breadcrumb":{"@id":"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/refiner.io\/docs\/kb\/mobile-sdk\/mobile-sdk-reference\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/refiner.io\/docs\/"},{"@type":"ListItem","position":2,"name":"Mobile SDK Reference"}]},{"@type":"WebSite","@id":"https:\/\/refiner.io\/docs\/#website","url":"https:\/\/refiner.io\/docs\/","name":"Refiner Documentation","description":"","publisher":{"@id":"https:\/\/refiner.io\/docs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/refiner.io\/docs\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/refiner.io\/docs\/#organization","name":"Refiner Documentation","url":"https:\/\/refiner.io\/docs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/","url":"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png","contentUrl":"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png","width":400,"height":61,"caption":"Refiner Documentation"},"image":{"@id":"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase\/22947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase"}],"about":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/types\/knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/comments?post=22947"}],"version-history":[{"count":57,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase\/22947\/revisions"}],"predecessor-version":[{"id":28258,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase\/22947\/revisions\/28258"}],"wp:attachment":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/media?parent=22947"}],"wp:term":[{"taxonomy":"knowledgebase_tag","embeddable":true,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase_tag?post=22947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}