{"_id":"59fcb126b449e700101d2d7e","project":"55843604fd8d910d007b9502","version":{"_id":"558444ceafccfd0d00fcb2bb","forked_from":"55843604fd8d910d007b9505","project":"55843604fd8d910d007b9502","__v":67,"createdAt":"2015-06-19T16:35:26.435Z","releaseDate":"2015-06-19T16:35:26.435Z","categories":["558444cfafccfd0d00fcb2bc","558444cfafccfd0d00fcb2bd","55ad4ce733616a0d00599d2e","55ad4cef6aadf20d0015b764","55ad4cf36aadf20d0015b765","55ad4cfb24cf160d0013584f","55ad4d0024cf160d00135850","55ad4d0a24cf160d00135851","55ad4d0d24cf160d00135852","55ad4d126aadf20d0015b766","55ad4d1624cf160d00135853","55ad4d1933616a0d00599d2f","55ad4d2233616a0d00599d30","55ad4d2e24cf160d00135854","55d35b6bf77e6d0d00b1b092","55d3649a0168850d0073f14a","55d366d40168850d0073f15a","55d37fcff77e6d0d00b1b13f","55d383e50168850d0073f1e1","55d3ac26c336ec0d007c2251","55d3c51cb2330119009c31db","55d3c59bfe37111900e536f3","55d3c5a7fe37111900e536f4","55d3c5b4fe37111900e536f5","55d3c5d4fe37111900e536f6","55d3c5d6b2330119009c31df","55d3c5d71f478b170077c164","55d3c687b2330119009c31e4","55d3c6a4fe37111900e536f9","55d3c6befe37111900e536fa","55d3c6e8d2c66f0d00497f93","55d49dcfd7c16b2d007de905","55d4ca8f5082980d0009c79b","55d4cab9c95a3d2f0069ad3d","55d4d279c95a3d2f0069ad60","55d4d9355082980d0009c7e1","55d4f6b5988e130d000b3eb1","55d64dc8e60a2f0d00b88ecb","5627ca43fcbbc621004ec07d","56c64a0d8f98b50d0012c37c","56f1b8b13eb62a34003ea041","56f1b9df4476fb2200795e8c","57f6907dca5e5d1700039ae9","591dd06ca266c423002ec4ca","59234825e465c11900922518","5936f82eaa591e0027638d57","59972f54fd7078001992c136","599c6da8f180820025f14909","59b054613c3e1b0019cf27d9","59b1ceca2d6231003ad73e5f","59b1cf1857911600382e0dc4","59b1cf2730f3d60010c30ef7","59b1cf385d4b89003035441a","59b1cf5857911600382e0dc6","59bc2c4e26ac9b0010a8b753","59bc2ce20b3eb30010657b70","59f0c793ba3bc90030f413ab","59f0cd62f5ecda00325294b9","59fb55a8e8d0f600101aedc3","59fcb05c067f8d0028613f86","5a2af4a1bc5fba00283909c1","5a83673b0e56010012138c12","5a972f2e77b85a0070e4ebe2","5aa300224ed4b40012c53e1d","5acd20095efd8d000359bb3c","5ad50889c05179000306021e","5af0927a8779670003daff34","5b55a46b282b25000319669e"],"is_deprecated":false,"is_hidden":false,"is_beta":true,"is_stable":true,"codename":"","version_clean":"3.0.0","version":"3"},"category":{"_id":"59fcb05c067f8d0028613f86","project":"55843604fd8d910d007b9502","version":"558444ceafccfd0d00fcb2bb","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2017-11-03T18:07:24.030Z","from_sync":false,"order":4,"slug":"site-intercept-android-sdk","title":"Mobile Android Intercept SDK"},"user":"5919f13aff66b00f00f1948c","githubsync":"","__v":0,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-11-03T18:10:46.728Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":3,"body":"If you have integrated the Site Intercept SDK into your app but the intercept is not appearing, there are a number of things to check.\n\n- Verify that the app log is free of any errors. Logs from the SDK will be prepended with **Qualtrics**.\n- Verify that the device or simulator has an open internet connection.\n- Verify that the SDK is initialized. Also, verify that the **evaluateTargetLogic** and **display** calls are executed.\n- Verify that the intercept ID that is used to initialize SDK matches the intercept ID provided by the Qualtrics portal.\n- Verify that the intercept type you use in the Site Intercept Portal is mobile and not desktop.\n- Verify that the intercept and creative have been published and that the intercept is currently active. Note that after any changes you make to the intercept or creatives, you will need to republish.\n- Verify that the SDK has been updated and is the most recent version.\n- Verify that the sampling rate of the intercept is not too low. For debugging we recommend that sampling is set to 100% and then lowering it once the intercept is used in production.\n- Verify that the intercept does not have a **Prevent Repeated Display** setting.\n- Verify that the intercept logic matches the conditions that are currently in the app. Keep in mind that custom properties are stored in local app storage, so they do persist across app sessions.\n- To check if logic is not passing, put a breakpoint in the callback passed to **evaluateTargetingLogic** and inspect the result of the **passed()** method of the returned **TargetingResult** object. To see if there were any errors when evaluating logic, inspect the value of the **getError()** method of the same object.\n- On iOS, if the survey window is appearing behind a view, such as a navigation bar, pass the root **UIViewController** of the app to the **Qualtrics.shared.display()** method. This will ensure that the survey window appears on top of all other app content.\n- To ensure that the SDK is being initialized correctly, add a completion callback to the initialize method that accepts an **InitializationResult** object. Use the **getMessage** method on this object to verify that initialization went correctly.\n- If the SDK is being initialized correctly, but the survey invitation is still not appearing, use the **getTargetingResult** (iOS) or **getTargetingResultStatus** (Android) method on the **TargetingResult** object to access an enum that explains the reason that the survey invitation was not displayed. The possible values are as follows:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Value\",\n    \"h-1\": \"Meaning\",\n    \"0-0\": \"**passed**\",\n    \"1-0\": \"**failedLogic**\",\n    \"2-0\": \"**sampledOut**\",\n    \"3-0\": \"**multipleDisplayPrevented**\",\n    \"4-0\": \"**error**\",\n    \"0-1\": \"Targeting logic passed successfully.\",\n    \"1-1\": \"The targeting logic did not pass. Communicate with the Qualtrics user to understand the targeting logic on the intercept.\",\n    \"2-1\": \"The targeting logic passed, but the intercept sampling rate prevented the survey invitation from appearing. Communicate with the Qualtrics user to adjust the sampling rate for development.\",\n    \"3-1\": \"The survey invitation has a **Prevent Repeated Display** option set. This prevents the survey invitation from appearing again for a specified time period. Ask the user to adjust this time for development.\",\n    \"4-1\": \"An error occurred when attempting to evaluate targeting logic. Use the **getError** method on the **TargetingResult** object to determine more about this error.\"\n  },\n  \"cols\": 2,\n  \"rows\": 5\n}\n[/block]","excerpt":"Troubleshooting Mobile App SDK on Android and iOS","slug":"troubleshooting","type":"basic","title":"Troubleshooting"}

Troubleshooting

Troubleshooting Mobile App SDK on Android and iOS

If you have integrated the Site Intercept SDK into your app but the intercept is not appearing, there are a number of things to check. - Verify that the app log is free of any errors. Logs from the SDK will be prepended with **Qualtrics**. - Verify that the device or simulator has an open internet connection. - Verify that the SDK is initialized. Also, verify that the **evaluateTargetLogic** and **display** calls are executed. - Verify that the intercept ID that is used to initialize SDK matches the intercept ID provided by the Qualtrics portal. - Verify that the intercept type you use in the Site Intercept Portal is mobile and not desktop. - Verify that the intercept and creative have been published and that the intercept is currently active. Note that after any changes you make to the intercept or creatives, you will need to republish. - Verify that the SDK has been updated and is the most recent version. - Verify that the sampling rate of the intercept is not too low. For debugging we recommend that sampling is set to 100% and then lowering it once the intercept is used in production. - Verify that the intercept does not have a **Prevent Repeated Display** setting. - Verify that the intercept logic matches the conditions that are currently in the app. Keep in mind that custom properties are stored in local app storage, so they do persist across app sessions. - To check if logic is not passing, put a breakpoint in the callback passed to **evaluateTargetingLogic** and inspect the result of the **passed()** method of the returned **TargetingResult** object. To see if there were any errors when evaluating logic, inspect the value of the **getError()** method of the same object. - On iOS, if the survey window is appearing behind a view, such as a navigation bar, pass the root **UIViewController** of the app to the **Qualtrics.shared.display()** method. This will ensure that the survey window appears on top of all other app content. - To ensure that the SDK is being initialized correctly, add a completion callback to the initialize method that accepts an **InitializationResult** object. Use the **getMessage** method on this object to verify that initialization went correctly. - If the SDK is being initialized correctly, but the survey invitation is still not appearing, use the **getTargetingResult** (iOS) or **getTargetingResultStatus** (Android) method on the **TargetingResult** object to access an enum that explains the reason that the survey invitation was not displayed. The possible values are as follows: [block:parameters] { "data": { "h-0": "Value", "h-1": "Meaning", "0-0": "**passed**", "1-0": "**failedLogic**", "2-0": "**sampledOut**", "3-0": "**multipleDisplayPrevented**", "4-0": "**error**", "0-1": "Targeting logic passed successfully.", "1-1": "The targeting logic did not pass. Communicate with the Qualtrics user to understand the targeting logic on the intercept.", "2-1": "The targeting logic passed, but the intercept sampling rate prevented the survey invitation from appearing. Communicate with the Qualtrics user to adjust the sampling rate for development.", "3-1": "The survey invitation has a **Prevent Repeated Display** option set. This prevents the survey invitation from appearing again for a specified time period. Ask the user to adjust this time for development.", "4-1": "An error occurred when attempting to evaluate targeting logic. Use the **getError** method on the **TargetingResult** object to determine more about this error." }, "cols": 2, "rows": 5 } [/block]