Contact Us

Select options below to help us quickly get you to the right person or solution.

(2) How can we help you?*

I have a question

I have feedback and/or a feature request

I’m having a problem

I have a redaction request

I'm locked out of my account

CTA Clicked

True

CIF Fields

(58) Product

Admin

SDK

Analytics

API

(67) Affecting live app?

true

(64) SDK (for 'sdk' issues only)

Android

iOS

MacOS

Windows

(59) Admin issue type

Dashboard

Web Support/Web Chat

Security Policy

(65) Plugin (for 'ios' and 'android' issues only)

Native

Unity

Xamarin

Cocos2d-x

(60) Issue type

Special request

(61) Sales issue?

TRUE

(153) Emergency

TRUE

(154) Domain

(180) Show Issue Flow

Show

(251) Email confirmation needed

True

(252) Email confirmation needed

TRUE

End of CIF Fields

For detailed answers to many common questions about Helpshift, please see our Knowledge Base. If you are a developer, feel free to check out our developer documentation and our API docs for updates and technical solutions. If you still have questions after reviewing these resources, please complete this form to reach out to our support team.

Please fill out the information requested below. The more information you provide, the more quickly we can escalate and resolve your issue. Help us help you!

(179) Is this an emergency?

Selecting this option will wake up our team members. Please only select it in the case of true emergencies that are blocking your workflows or make your app unusable!

Yes, this is an emergency.

(13) What is your role?*

I’m a developer

I’m a support Agent

I’m an Admin

Please review our developer documentation. If you still have questions, simply complete the options below to reach out to Helpshift support.

Please review our Knowledge Base. If you still have questions, please complete this form to reach out to Helpshift support.

Please review our Knowledge Base at Knowledge Base. If you still have questions, please complete this form to reach out to Helpshift support.

Try the following workaround: there's a Microsoft bug that causes authentication to sometimes fail the first time, then succeed subsequent times. In case this is the cause of the error, please try downloading the content pack a second time:

Re-select “Basic authorization”

The form should expand, asking for your user name and password. You can then copy the User Name from Helpshift > Analytics > Power Bi and leave the password field blank.

Lastly, if you’re using a date filter in your report, check whether it’s the “Date” or “Creation date.” Most analytics in the Helpshift Dashboard are calculated based on an Issue’s creation date, not the date of the “event” in question. For example, CSAT rating for “issues created on day X” might be different than CSAT rating for issues rated on day X.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.
FAQ Helpfulness rating not updating

FAQ Helpfulness rating updates once per day. That means that if I mark an FAQ helpful or unhelpful, I won't see that reflected in the Dashboard until the next day."Aggregate" metrics seem off

Aggregates are often weighted averages in some way. For example:

Aggregate metrics in "Summary by languages" (or summary by app) may be lower than the aggregates on the main tab. This is because web and email Issues aren't associated with an app or language, so those Issues won't be counted in those sections.

Aggregate CSAT rating doesn't match across ‘summary by app’, 'summary by platform' and ‘summary by language.’ This is because the average Survey Rating is calculated using a custom formula, which causes it to be weighted differently depending on whether it's being viewed by app, language, or platform.MAU numbers seem off

NOTE: If you are comparing data from an external tool like Google Analytics with Helpshift’s data, there are likely to be discrepancies due to the fact that:

They sample sampled pre aggregated data, which can be wrong.

They use client session times for their calculations and depending on the session filters they won't be included in the calculation.

For Android specifically, also note that the discrepancy could be due to reinstalls. On Android, we have no reliable way to get the device ID (which persists across uninstall and reinstalls) and we generate a random UID on install to use as device ID. Therefore, if a user uninstalls and reinstalls the app twice in a month, then it will be counted as 2 MAUs instead of 1. iOS does not have this problem because there is a reliable way to get the device-id from OS.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Webhook failing with 500 error
500 errors generally point to a setup issue, as they indicate that the server encountered an internal error. An example of such an error is as follows:
“Helpshift Webhook notifications delivery failed for "update issue" due to error "500 Received fatal alert: handshake_failure" for event 'update_issue'

If you’re unable to determine the cause of the error on your end, let us know below to report this issue to us, and be sure to include details on how the target system is consuming the Webhook. Helpshift sends out a standard Webhook format, so we'll need to see how your system handles this in order to help us debug further.

Lastly, if you’re using a date filter in your report, check whether it’s “Date” or “Creation date.” Most analytics in the Helpshift Dashboard are calculated based on an Issue’s creation date, not the date of the “event” in question. For example, the CSAT rating for “Issues created on day X” might be different than the CSAT rating for Issues rated on day X.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Failed to update source credentials” error when downloading content packsMake sure you’ve selected "Basic" during signup, following these directions: how do I install Power BI?

Try the following workaround: There's a Microsoft bug that causes authentication to sometimes fail the first time, then succeed subsequent times. In case this is the cause of the error, please try downloading the content pack a second time:

Re-select “Basic authorization”
The form should expand, asking for User Name and Password. You can then copy the User Name from Helpshift > Analytics> Power BI and leave the password field blank.

Questions about metrics definitions and how they’re calculated
Check out the Power BI Glossary for explanations on how the main metrics in our Power BI reports are calculated.
Did this resolve your issue? No, I still need help

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

FAQ Helpfulness rating not updating
The FAQ Helpfulness rating updates once per day. That means that if you mark an FAQ as helpful or unhelpful, you won't see that reflected in your Dashboard until the next day.

"Aggregate" metrics seem off
Aggregates are often weighted averages in some way. For example:

Aggregate metrics in "Summary by languages" (or summary by app) may be lower than the aggregates on the main tab. This is because web and email Issues aren't associated with an app or language, so those Issues won't be counted in those sections.

Aggregate CSAT rating doesn't match across ‘summary by app’, 'summary by platform' and ‘summary by language.’ This is because the average survey rating is calculated using a custom formula, which causes it to be weighted differently depending on whether it's being viewed by app, language, or platform.

MAU numbers seem off
Note: If you are comparing data from an external tool (like Google Analytics) with Helpshift’s data, there are likely to be discrepancies due to the fact that:
- They sample pre-aggregated data, which can be wrong.
- They use client session times for their calculations, and, depending on the session filters, those client session times won't be included in the calculation.

For Android specifically, also note that the discrepancy could be due to reinstalls. On Android, we have no reliable way to get the device ID (which persists across uninstall/reinstalls) and we generate a random UID on install to use as device ID. Therefore, if a user uninstalls and reinstalls the app twice in a month, then it will be counted as 2 MAUs instead of 1. iOS does not have this problem because there is a reliable way to get the device-id from OS.

"Invalid token” error when embedding Web Support Portal on Facebook
Facebook attempts an HTTP POST request on that URL before rendering it in order to deliver an access token. Helpshift does not support POST requests for https://.helpshift.com/a/ URLs, so this will result in an “invalid token” error. To generate a URL that can be used with Facebook tab apps, we recommend:

- Setting up an intermediary site which embeds our support page in an iframe. In this case, you could host a page at, say, [yourwebsite.com]/support/ which embeds our support page in an iframe, and which also accepts POST requests.
- Using a service like Woobox to integrate our support page iframe in one of the Facebook tabs.

Scroll position is incorrect within iframe
If you are adding extra pixels of "height" or "width" to the wrapper page, our recommended solution is to remove the width and height of the parent document's body and use the default heightPadding = 150 in _HS config of the embed code.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Unable to scroll
This can happen as a result of custom CSS that was added by your team. Check whether you added the "overflow: hidden" property to the body tag. This tag prevents the page from scrolling, and removing should resolve the issue!

'Contact Us' button not working
This can happen when custom CSS is adding or removing padding on the footer. If you have custom CSS which adds padding in the footer, try removing it.

Unable to search FAQs by keywords
Searching by keywords is only supported for in-app (SDK) search, and not web. This is because they are meant to help refine app users' search results, since screen space is precious and too many results may overwhelm users, which is not an issue on the web.

Mobile web support rendering with overly large text/not mobile friendly
If you’re using custom CSS, check whether the issue still occurs with the CSS removed. For example, this issue can be caused by CSS defining custom font sizes.

Unable to search FAQs by keywordsSearching by keywords is only supported for in-app (SDK) search, and not web. This is because this functionality is meant to help refine app users' search results, since screen space is precious and too many results might overwhelm users, which isn't an issue on the web.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Session ends on page refresh/hitting "back"/etc.
If a user is having a conversation via Web Chat and they refresh the page, close the browser window, etc., the persistence of the chat window depends on how you have Web Chat is configured. Check whether:

"APNS Certificate - Something went wrong. Please try again in a few moments" error when uploading an APNS/.p12 certificate

“Oops” error when performing any other action in the Dashboard

Automation or Auto-assignment not working as expected

Conversation is not behaving as expected

Issues in the FAQ editor/Issues importing FAQs in bulk

Metadata, HS-Tags, Custom Issue Field behavior

Dashboard UI is not behaving as expected

Something else

Here are some solutions for common Issues that Admins and Agents face in the Dashboard. If none of these solutions work, let us know and we will provide options for you to reach out to our support team.

Smart View shows incorrect number of unread messages
Smart View unread “counts” can occasionally be off, especially after feature releases. If the issue persists after a few minutes or after a hard refresh of the Dashboard, please let us know and our Support team will take a look!

Issue shows incorrect status (e.g., shows “Waiting for Agent” when it’s already been resolved)
These “Issue state mismatch” bugs can occasionally occur. Internally, we run a script every 30 hours to fix them. If you see that the Issue remains in the incorrect state for more than 30 hours and after a hard refresh of the Dashboard, please let us know and our Support team will take a look!

Platform icon in Issues feed showing incorrect platform
This can happen when the same app ID is used for both Android and iOS in your initialization code. Please review our developer documentation on initialization for iOS and Android.
Also, please check to make sure you're using the iOS ID for the iOS app, and Android ID for the Android app. You can find the app ID in your SDK settings.

Email Issues show "sent to: Undisclosed recipients"
Normally, an email Issue sent to shiftazon@helpshift.com will show "via email sent to shiftazon@helpshift.com" in the header. However, if the support alias is in BCC, it may say "undisclosed recipients" instead. Here is the expected behavior for the various combinations of the cc/bcc/'to' fields:

"to: undisclosed recipients" will show up when no email is present in the "To" or CC fields, only in BCC.

Simply "via Email" will appear when an address is present in CC, but the "To" field is empty, regardless of whether or not anything is listed in the BCC field.

In all other situations, the email address/email channel name will show in the header as normal.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Data (HS-Tag, Custom Data, or Custom Issue Field data) not appearing for some Issues
If you’re using Custom Data to add tags or populate Custom Issue Fields, and it’s not working on some or all Issues, check the following:

- Confirm whether only iOS Issues or only Android Issues are missing Metadata, or if both are
- For HS-Tags, make sure that the tag being added exists in the Dashboard
- For Custom Issue Fields, make sure the Metadata key is set for the field in the Dashboard
- Note that Custom Data doesn’t update if the device or user information changes mid-conversation. Review When does device info and other metadata get refreshed/updated? to learn more about when this happens.
- Select the options below to contact our Support team. We may need to reach out for code snippets and other technical information in order to debug!

“Columns do not match expected behavior”This error usually means that the file name is incorrect. Make sure not to change the names of the CSV files or folders before zipping them (keep them in the format en_EN, etc). Also make sure that the file format is not corrupted and that the column names are not changed.

"Publish ID does not belong" errorThis error is shown when a publish ID is present in the CSV column, but not in the Dashboard. Make sure you’re not trying to import FAQs from one app/domain into another without changing the publish IDs to match.

"Unavailable language is not supported by the app" errorThis error usually means that the file name is incorrect. Make sure not to change the names of the CSV files or folders before zipping them (keep them in the format en_EN, etc).

Here are some explanations of Issue behavior that can be confusing. If reviewing these explanations doesn't help, let us know and we will provide options for you to reach out to our support team.

Unable to “follow up” on an SDK issue
The “Follow up” feature can only be used on resolved SDK Issues (not rejected Issues), and only on the most *recent* Issue submitted by a given user. Email Issues, however, can be reopened at any time. Please see this FAQ for more information!

Duplicate SDK issues created
This kind of behavior can occur as an edge case when users interact with an in-app conversation while on a flaky/disrupted network connection. If this is happens often, let our Support team know and provide as many example Issue IDs/URLs as possible for our investigation!

Issues being “reopened” by the user when they shouldn’t beThis kind of behavior can occur as an edge case when users interact with an in-app conversation while on a flaky/disrupted network connection. If this is happening very often, let the Support team know and provide as many example Issue IDs/URLs as possible for our investigation!

User has multiple open Issues from a single device
If you see that a user has multiple Issues open at once, check to see if there are any slight differences in the Metadata submitted with each Issue suggesting that the user may have deleted or uninstalled the game and then reinstalled it. When a user uninstalls an app/game, their Device ID is changed. This is a security setting set by Apple as well as Google. Since Helpshift conversations are grouped by Device ID, this creates two Issues.

Name entered in web contact us form isn't present in the web Issue
Helpshift caches the initial name or username that an end user provides when submitting their first ever web Issue. This will be the name that appears on other Issues submitted from the same user's email address going forward, regardless of what they enter in the contact form "name" field.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Please note: the settings below can only be managed by Admins. If you are an Agent, please refer your Admin to review these solutions.

Agent limit: Issues not being assigned despite Agents being available
If an Agent is marked as “Available” in the Dashboard and is not receiving new Issues when they should be, check whether you’re “excluding” Issues that have already been replied to from the limit. Review How do I limit the number of Issues Agents are assigned? for more information.
If you are using Real-Time Operations, check to make sure that the Agents are indeed marked
as “available” and have capacity.

Automations not running on an Issue when they should be
In the case of New Issue Automations, please note that Automations are applied in the order in which they appear in the Dashboard. Make sure that there are no conditions within other Automations that might prevent the Automation in question from running.In the case of Time-Based Automations, note that these Automations will not retroactively run on Issues that have aged past the specified criteria that you defined in the Automation. This means, for example, that if you create an Automation to tag Issues that are 4 hours old, it will not run on Issues that arrived over 4 hours prior to the Automation's creation.

If you get an error when attempting to perform an action in the Dashboard, please do a hard refresh and try again. If you still see the error, please follow the steps below to capture information our the Support team can use to debug the error:

Go to the screen where you take the action causing the error, but don't try to make the change yet or hit submit, enter, or save

Right click or ctrl-click on the screen and select "Inspect Element" from the drop-down. This will cause a Chrome developer pane to appear on your screen.

Perform the action that causes the error, or click submit, enter, or save

When the error appears, look for any error messages that appear in the "Network" or "Console" tabs of the developer pane. Then, copy and paste the text of any errors you see in either tab, or take a screenshot if that isn't possible, and send it over to us.

Helpshift is appearing in English, but I have a different language set in my app

FAQs aren’t appearing in the app as expected

FAQ search is bringing up incorrect results

Incorrectly localized/translated strings in the Helpshift UI

The Helpshift UI doesn’t look right in the app

Metadata, hs-tags, custom issue field behavior

Something else

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

If you’re using Custom Data to add tags or populate Custom Issue Fields, and it’s not working on some or all Issues, confirm whether there is a check in your code causing the metadata dict not to be added to the Helpshift config dict when it’s null. This would cause the metadata dict passed to CreateDictionary method to be null, and not appear on the Issue.

If HS-Tags are not appearing on Issues, make sure that that the tags exist under the "active tags" area in your Dashboard, and that you’ve followed the instructions in the FAQ What are HS-Tags?Note:

The tags in the code need to be all lowercase to match the tags in the Dashboard.

Some values (like Country Code) are derived from the device's SIM. A device without a SIM card won't be able to pass Country Code as Metadata or HS-Tags.

Did this resolve your issue? If you need to connect with our Support team, be sure to provide any relevant code snippets where you’ve implemented Custom Data, HS-Tags and Custom Issue Fields.No, I still need helpYes, this helped

If FAQs aren’t loading for a particular language, make sure that you either have translations published for that language, or have a fallback language for iOS or Android enabled.

(243) Before you continue, can you please make sure you’re integrating the latest version of the MacOS? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Note: migrating from GCM to Firebase for notifications? Helpshift doesn’t support using both GCM and FCM in a single app. Follow the instructions in our developer documentation on migrating to FCM (Android) to migrate and ensure your users will continue to receive notifications!

(210) Are you using the Native Android SDK, or one of our plugins?

Native Android SDK

Unity SDK

Cocos2d-x SDK

Xamarin SDK

(218) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(216) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(214) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Issues implementing Firebase (FCM) with Unity
Check what version of the Android Support Libraries you’re using. If they’re v24+, review the following:

The latest Firebase library expects the Android support library to be version 24+, but there is a reported build change in Android that needs to be done in order to make the app work with the latest support libraries. Check out this blog post on
the age of the vectors.

The Android support library runs a test on vectors on initialization which checks for correct loading and parsing of a test XML file. If the mentioned build changes are not done, then the test fails to parse the XML and the app crashes with an exception. The app crashes on start, if these build changes are not done, with this Unity error.

Unity does not allow modification of the Android build process unless the project is exported to Android Studio. Therefore, the Helpshift SDK uses 23.4.0 version of the Android support libraries by default. So, either you can make the build change as recommended in the above link, or you can move to a previous version of Firebase that works with 23.x.x android support library version in order to avoid the app crash.

If you have the option to move to Android Studio, then you can use the AAR file of the Helpshift plugin. You can create the Helpshift AAR from the Unity plugin by referring to our developer documentation on fixing the inbuilt gradle build.

This way, you will be able to use the Helpshift plugin with your latest support libraries.

App crash when receiving a push notification on Android 8 devices (error: "java.lang.IllegalStateException: Not allowed to start service Intent”
If you're using the built-in push notification support that the SDK provides, as opposed to your own push notification library, please check which version of the Android Support libs you're on.

For context, the built-in support for push notification uses GCM. This requires using GCMIntentService, which causes a crash if you target API 26, because of a limit on starting intents. If you are using this method, we recommend integrating the FCM library into your project and using the 2nd method provided in our developer documentation on manual push support.

(212) Before you continue, can you please make sure you’re integrating the latest version of the Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(207) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(205) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(203) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(201) Before you continue, can you please make sure you’re integrating the latest version of the iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Please review the explanations of our FAQ search functionality below. If you need additional assistance, let us know and we will provide options for you to reach out to our support team.

Unable to search FAQs by keywordsSearching by keywords is only supported for in-app (SDK) search, not web. The logic is that this is meant to help refine app-users' search results, since screen space is precious and we don't wish for too many results to overwhelm the users, which isn't an issue on the web.

Searching keywords with punctuation doesn’t workOur search function is set up to only allow searches using a-z, A-Z and 0-9 characters. A search with punctuation (such as a period or comma) will turn up no results.

In-app search brings up results that don’t contain the search termOur FAQ search indexes both results containing the actual search term, and results with similar-sounding words. Those "metaphone" results will be prioritized lower down in the result list than exact matches. Also note that the metaphone algorithm we use isn't language specific.

Some examples:

Searching for "buddy" can also bring up FAQ results that contain terms like "bud," "but," "putty" etc.

Searching for "pr" on a Spanish-language device would be expected bring up results containing the word "para."

(143) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(142) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(141) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(140) Before you continue, can you please make sure you’re integrating the latest version of the Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(137) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(135) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(133) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(131) Before you continue, can you please make sure you’re integrating the latest version of the iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Translations are incorrect or need improvements
The translated strings in our SDKs are provided by a localization company that partners with us. If you disagree with any of the translations you see, please let us know and we will provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

(123) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(121) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(119) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(117) Before you continue, can you please make sure you’re integrating the latest version of the Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(114) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(112) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(110) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(108) Before you continue, can you please make sure you’re integrating the latest version of the iOS SDK? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Helpshift no longer supports the Windows SDK. This means we are no longer making maintenance improvements or fixing bugs. To offer a Helpshift support experience in Windows, we recommend using our REST APIs or embedding web support in your app.

The following is a list of known issues with the Mac OS that will be fixed in future releases:

Bullet points appear incorrectly rendered as “022” in Mac FAQs

“Resolution question” sometimes appears twice

When Agents use the “request a screenshot” feature on Mac SDK issues, modifying the text before sending it causes the “attach” button not to appear

(103) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(102) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(100) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(98) Before you continue, can you please make sure you’re integrating the latest version of the Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(93) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(91) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(89) Before you continue, can you please make sure you’re integrating the latest version of the iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Helpshift no longer supports the Windows SDK. This means we are no longer making maintenance improvements or fixing bugs. To offer a Helpshift support experience in Windows, we recommend using our REST APIs or embedding web support in your app.

(195) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. In recent SDK versions this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the conversation, but can be downloaded.

Larger images in FAQs will be slower to download - the download speed will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all Issues Anonymous and disable attachments.

App won't load, "HSRetryService" error
The error is due to HSRetryService class, which was removed in our most recent SDK versions. To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Crash with “java.lang.SecurityException: You need MANAGE_USERS permission to: [some function]” in stack trace
Check whether the devices experiencing this issue have the option "Do not keep activities" enabled in Developer Settings. If so, unchecking that will resolve it.

Some images from device can't be attached in SDK chat
On Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.
This is due to a known issue where there are issues attaching Google photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the Google Photos app.

(193) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. In recent SDK versions, this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the conversation, but can be downloaded.

Larger images in FAQs will be slower to download and will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all issues Anonymous and disable attachments.

App won't load, "HSRetryService" error
The error is due to HSRetryService class, which was removed in our most recent SDK versions). To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Crash with “java.lang.SecurityException: You need MANAGE_USERS permission to: [some function]” in stack trace
Check whether the devices experiencing this issue have the option "Do not keep activities" enabled in Developer Settings. If so, unchecking that will resolve it.

Some images from device can't be attached in SDK chat
On Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.
This is due to a known issue where there are issues attaching Google photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the Google Photos app. This has also been reported by other image picking libraries and seems to be a common issue faced by many Android developers.

(191) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. For recent SDK versions, this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the conversation, but can be downloaded.

Larger images in FAQs will be slower to download and will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all issues Anonymous and disable attachments.

App won't load, "HSRetryService" error
The error is due to HSRetryService class, which was removed in our most recent SDK versions. To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Crash with “java.lang.SecurityException: You need MANAGE_USERS permission to: [some function]” in stack trace
Check whether the devices experiencing this issue have the option "Do not keep activities" enabled in their developer settings. If so, unchecking that will resolve it.<

Some images from device can't be attached in SDK chat
On Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.
This is due to a known issue where there are issues attaching Google photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the google photos app. This has also been reported by other image picking libraries and seems to be a common issue faced by other android developers too.

(189) Before you continue, can you please make sure you’re integrating the latest version of the Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. For SDK v6.2.0 and above this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the conversation, but can be downloaded.

Larger images in FAQs will be slower to download and will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all issues Anonymous and disable attachments.

App won't load, "HSRetryService" error
The error is due to HSRetryService class, which was removed in our most recent SDK versions. To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Crash with “java.lang.SecurityException: You need MANAGE_USERS permission to: [some function]” in stack trace
Check whether the devices experiencing this issue have the option "Do not keep activities" enabled in Developer Settings. If so, unchecking that will resolve it.

App crash when receiving a push notification on Android 8 devices (error: "java.lang.IllegalStateException: Not allowed to start service Intent"
If you're using the built-in push notification support that the SDK provides (https://developers.helpshift.com/unity/notifications-android/#inbuilt-push-support), as opposed to your own push notification library, please check which version of the Android Support libs you're on.
For context, the built-in support for push notification uses GCM. This requires using GCMIntentService, which causes a crash if you target API 26, because of a limit on starting intents. If you are using this method, we recommend integrating FCM library into your project and using the 2nd method provided in our developer documentation on manual push support for Unity for Android notifications.

Have you made any customizations to our themes/styles? For example, are you overriding our Helpshift theme style and using fontFamily like in: sans-serif-light
If so, you will need to implement it like this Stackoverflow solution. (Use the fontFamily attribute on a TextView or Button and then use that in the theme.)

Are you using the third party library 'Calligraphy'? Someone has reported a similar crash in this Github request.

Some images from device can't be attached in SDK chat
On Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.
This is due to a known issue where there are issues attaching Google Photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the google photos app. This has also been reported by other image picking libraries and seems to be a common issue faced by other android developers too.

(181) Before you continue, can you please make sure you’re integrating the latest version of the iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Please review the list of common errors and known issues below. If none of them match the exceptions or logs you’re seeing during integration, click the 'No, I still need help' button below to reach out to our Support team.

Also, if you’re not currently collecting logs, please enable logging or crash logs here so we can help you debug!

(Note: If possible, please attach a sample/debug app or project for our developers to analyze.)

hs_setContentInsetAdjustmentBehaviorToAutomaticWithParent crash
If you are seeing this app crash message:

App crashes when selecting a screenshot
The Helpshift SDK uses the UIImagePickerController, which supports portrait mode only. This means if the interface orientations supported by your application do not include portrait mask, then while choosing a screenshot the application will crash.

With this in mind, please make sure that your application's list of supported interface orientations does not exclude portrait. You can learn more about how to avoid this crash by reviewing our developer documentation on
fixing orientation issues.

(183) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Note: if the app crashes on image attachment with the stack trace “Uncaught exception: UIApplicationInvalidInterfaceOrientation: Supported orientations has no common orientation with the application,” this is caused by a known Unity bug. You can view it in the Unity issue tracker.

(185) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Note: if the app crashes on image attachment with the stack trace “Uncaught exception: UIApplicationInvalidInterfaceOrientation: Supported orientations has no common orientation with the application,” this is caused by a known Unity bug. You can view it in the Unity issue tracker.

(186) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

Note: if the app crashes on image attachment with the stack trace “Uncaught exception: UIApplicationInvalidInterfaceOrientation: Supported orientations has no common orientation with the application,” this is caused by a known Unity bug. You can view it in the Unity issue tracker.

(83) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(81) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(79) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(77) Before you continue, can you please make sure you’re integrating the latest version of the Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(75) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(74) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x SDK? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(95) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin SDK? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(70) Before you continue, can you please make sure you’re integrating the latest version of the iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(72) Before you continue, can you please make sure you’re integrating the latest version of the Unity SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(45) Before you continue, can you please make sure you’re integrating the latest version of the MacOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(43) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x for iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(41) Before you continue, can you please make sure you’re integrating the latest version of the Cocos2d-x for Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(38) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin for iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(36) Before you continue, can you please make sure you’re integrating the latest version of the Xamarin for Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(34) Before you continue, can you please make sure you’re integrating the latest version of the Unity for iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(25) Before you continue, can you please make sure you’re integrating the latest version of the Unity for Android SDK? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(32) Before you continue, can you please make sure you’re integrating the latest version of the iOS SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

(30) Before you continue, can you please make sure you’re integrating the latest version of the Android SDK*? Each new version contains bug fixes and improvements, so the issue you’re experiencing may already be resolved in the latest version.

If you are seeing the message Error: "Could not fetch FAQ's." with the following error in the console: "SendMessage: object not found!":
Confirm whether you have multiple UnityAppController files when initializing the app, for example, from another plugin like AppsFlyer. The app can only support one UnityAppController, so you will have to merge both the files into one file and keep only one UnityAppController file. To combine the app controllers, you will just need to copy all the methods and headers from one of the files to another. If there are any common methods, you can combine them. This will make sure that there is only one file with contents of both the files.

Translations are incorrect or need improvement
The translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Translations are incorrect or need improvement
The translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Translations are incorrect or need improvementThe translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Translations are incorrect or need improvementThe translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Problems adding a language not officially supported by Helpshift
You may want to localize your app in a language that isn’t included in Helpshift’s official list of supported languages. Let’s use Estonian as an example.

Check whether the language is officially supported for iOS; if not, you will need to use Helpshift's setSDKLanguage API. Estonian isn’t an official device language for iOS, so you’d use the following call: [HelpshiftCore setLanguage:@"et_EE"]. Make sure you are calling this API before launching Helpshift screen. Ideally it should be called just after the install call.

Next, for any custom language not supported out-of-the-box by Helpshift SDK, we expect the app developer to provide the localization to Helpshift so we can display the SDK strings in correct language. This ensures that the user gets end to end localization (SDK strings + FAQs). To do so, add the custom translations to Helpshift's localization bundle. Follow this guide on how to create a custom bundle and pick the languages you wish to support. For the Estonian example, you’d need to add a folder called et_EE.lproj to the localization folder. We recommend duplicating a folder for any existing language, rename it to et_EE.lproj and then editing the HelpshiftLocalizable.strings file to provide the actual localization. After you complete the process stated in the link above, the SDK should successfully pick up the custom language.

Translations are incorrect or need improvementThe translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Problems adding a language not officially supported by Helpshift
You may want to localize your app in a language that isn’t included in Helpshift’s official list of supported languages. Let’s use Estonian as an example.

Check whether the language is officially supported for iOS; if not, you will need to use Helpshift's setSDKLanguage API. Estonian isn’t an official device language for iOS, so you’d use the following call: [HelpshiftCore setLanguage:@"et_EE"]. Make sure you are calling this API before launching Helpshift screen. Ideally it should be called just after the install call.

Next, for any custom language not supported out-of-the-box by Helpshift SDK, we expect the app developer to provide the localization to Helpshift so we can display the SDK strings in correct language. This ensures that the user gets end to end localization (SDK strings + FAQs). To do so, add the custom translations to Helpshift's localization bundle. Follow this guide on how to create a custom bundle and pick the languages you wish to support. For the Estonian example, you’d need to add a folder called et_EE.lproj to the localization folder. We recommend duplicating a folder for any existing language, rename it to et_EE.lproj and then editing the HelpshiftLocalizable.strings file to provide the actual localizations. After you complete the process stated in the link above, the SDK should successfully pick up the custom language.

Translations are incorrect or need improvement
The translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Problems adding a language not officially supported by Helpshift
You may want to localize your app in a language that isn’t included in Helpshift’s official list of supported languages. Let’s use Estonian as an example.

Check whether the language is officially supported for iOS; if not, you will need to use Helpshift's setSDKLanguage API. Estonian isn’t an official device language for iOS, so you’d use the following call: [HelpshiftCore setLanguage:@"et_EE"]. Make sure you are calling this API before launching Helpshift screen. Ideally it should be called just after the install call.

Next, for any custom language not supported out-of-the-box by Helpshift SDK, we expect the app developer to provide the localization to Helpshift so we can display the SDK strings in correct language. This ensures that the user gets end to end localization (SDK strings + FAQs). To do so, add the custom translations to Helpshift's localization bundle. Follow this guide (https://developers.helpshift.com/unity/string-customization-ios/) on how to create a custom bundle and pick the languages you wish to support. For the Estonian example, you’d need to add a folder called et_EE.lproj to the localization folder. We recommend duplicating a folder for any existing language, rename it to et_EE.lproj and then editing the HelpshiftLocalizable.strings file to provide the actual localizations. After you complete the process stated in the link above, the SDK should successfully pick up the custom language.

Translations are incorrect or need improvementThe translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Problems adding a language not officially supported by Helpshift
You may want to localize your app in a language that isn’t included in Helpshift’s official list of supported languages. Let’s use Estonian as an example.

Check whether the language is officially supported for iOS; if not, you will need to use Helpshift's setSDKLanguage API. Estonian isn’t an official device language for iOS, so you’d use the following call: [HelpshiftCore setLanguage:@"et_EE"]. Make sure you are calling this API before launching Helpshift screen. Ideally it should be called just after the install call.

Next, for any custom language not supported out-of-the-box by Helpshift SDK, we expect the app developer to provide the localization to Helpshift so we can display the SDK strings in correct language. This ensures that the user gets end to end localization (SDK strings + FAQs). To do so, add the custom translations to Helpshift's localizations bundle. Follow this guide on how to create a custom bundle and pick the languages you wish to support. For the Estonian example, you’d need to add a folder called et_EE.lproj to the localization folder. We recommend duplicating a folder for any existing language, rename it to et_EE.lproj and then editing the HelpshiftLocalizable.strings file to provide the actual localizations. After you complete the process stated in the link above, the SDK should successfully pick up the custom language.

Translations are incorrect or need improvement
The translated strings in our SDKs are provided by a localization company that’s a partner of ours. If you disagree with any of the translations you see, please let us know and we’ll provide that feedback to our partners! In the meantime, you can customize any strings in order to change the translation.

Please note: If you’re using Cocoapods, you can find the HelpshiftLocalizable.strings file in the Helpshift Pod resources (For version 5.7.0 and above, HsLocalization.bundle will be used). If you customize the strings in that file, those strings will be overwritten the next time you upgrade your Helpshift SDK version. We recommend:

Making sure you back-up any customized strings or translations, so you can migrate the values back into the new string files.

Adding these customizations in the version control system. That way when you upgrade Helpshift, you can see what changes have been made and revert them if needed.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Cannot scroll FAQ list, cannot switch FAQ tabs, keyboard input not working when creating a new conversation etc.
These UI issues are caused when hardware acceleration is turned off for Helpshift's activities. To ensure that hardware acceleration is turned on, review our developer documentation on troubleshooting Android for Unity UI issues.

Push notifications don’t include app icon
First, confirm whether you’re calling "Core.install()" from Application.onCreate() - review our developer documentation on configuring the Unity SDK. Otherwise, "Core.handePush()" is called before "Core.install()" (since this call is not in Application.onCreate()), leaving the SDK in an undefined state.
If the issue is occurring specifically for Android OS version 5 (Lollipop) and above, it may be due to the guidelines for notification icons, which have changed since Lollipop (the app icon needs to be provided as a monochrome icon with transparency). More information can be found in these links:

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Push notifications don’t include the app icon
Confirm whether you’re calling "Core.install()" from Application.onCreate() by reviewing our developer documentation on configuring the Helpshift Android SDK.
Otherwise, "Core.handePush()" is called before "Core.install()" (since this call is not in Application.onCreate()), leaving the SDK in an undefined state.If the issue is occurring specifically for Android OS version 5 (Lollipop) and above, it may be due to the guidelines for notification icons, which have changed since Lollipop (the app icon needs to be provided as a monochrome icon with transparency). More information can be found in these links:

If that turns out to be the problem, once you have changed the solid color icon to an icon with transparency, you can set it in the Helpshift SDK install call and it should work as expected.

Scrolling isn’t working in FAQs
This sort of UI glitch can occur when hardware acceleration is turned off for the app. For more information, see our developer documentation on troubleshooting UI issues in Android..

Search bar/background color behavior; visual problems with FAQ ViewController on iOS 11
With the release of iOS 11, we've changed the way visual design works for the FAQ ViewController (top part of the UI when viewing FAQ sections/articles; for example, the search bar).

As a result, you may notice the following issues when using Xcode 8:

Search bar background color looks off

Top section is "misaligned"/has weird padding

Using Xcode 9 will resolve this on our latest iOS builds.

Also, note that starting from iOS 11, the search bar is part of the navigation bar. So attributes like search bar background color have no effect on iOS 11 and later. The color of the whole navigation bar, including the search bar, can be changed using the "Background color" attribute of navigation bar. You can read more about this in our developer documentation on design attributes in the search bar.

Search bar/background color behavior; visual problems with FAQ ViewController on iOS 11
With the release of iOS 11, we've changed the way visual design works for the FAQ ViewController (top part of the UI when viewing FAQ sections/articles; for example, the search bar).

As a result, you may notice the following issues when using Xcode 8:

Search bar background color looks off

Top section is "misaligned"/has weird padding

Using Xcode 9 will resolve this on our latest iOS builds.

Also, note that starting from iOS 11, the search bar is part of the navigation bar. So attributes like search bar background color have no effect on iOS 11 and later. The color of the whole navigation bar, including the search bar, can be changed using the "Background color" attribute of navigation bar. You can read more about this in our developer documentation on design attributes in the search bar.

Search bar/background color behavior; visual problems with FAQ ViewController on iOS 11
With the release of iOS 11, we've changed the way visual design works for the FAQ ViewController (top part of the UI when viewing FAQ sections/articles; for example, the search bar).
As a result, you may notice the following issues when using Xcode 8:

Search bar background color looks off

Top section is "misaligned"/has weird padding

Using Xcode 9 will resolve this on our latest iOS builds.
Also, note that starting from iOS 11, the search bar is part of the navigation bar. So attributes like search bar background color have no effect on iOS 11 and later. The color of the whole navigation bar, including the search bar, can be changed using the "Background color" attribute of navigation bar. You can read more about this in our developer documentation on design attributes in the search bar.

Search bar/background color behavior; visual problems with FAQ ViewController on iOS 11
With the release of iOS 11, we've changed the way visual design works for the FAQ ViewController (top part of the UI when viewing FAQ sections/articles; for example, the search bar).
As a result, you may notice the following issues when using Xcode 8:

Search bar background color looks off

Top section is "misaligned"/has weird padding

Using Xcode 9 will resolve this on our latest iOS builds.
Also, note that starting from iOS 11, the search bar is part of the navigation bar. So attributes like search bar background color have no effect on iOS 11 and later. The color of the whole navigation bar, including the search bar, can be changed using the "Background color" attribute of navigation bar. You can read more about this in our developer documentation on design attributes in the search bar.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. In recent SDK versions this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the Conversation, but can be downloaded.

Larger images in FAQs will be slower to download and will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new Conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all issues Anonymous and disable attachments.

App won't load, "HSRetryService" error
This error is due to HSRetryService class, which was removed in our most recent SDK versions. To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Some images from the user's device can't be attached during an in-app conversation
On Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.

This is due to a known issue where there are issues attaching Google photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the google photos app.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. In recent SDK versions, this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the Conversation, but can be downloaded.

Larger images in FAQs will be slower to download and will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new Conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all issues Anonymous and disable attachments.

App won't load, "HSRetryService" error
The error is due to HSRetryService class, which was removed in our most recent SDK versions. To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Some images from device can't be attached during an in-app conversationOn Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.

This is due to a known issue where there are issues attaching Google photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the google photos app. This has also been reported by other image picking libraries and seems to be a common issue faced by other Android developers too.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. For recent SDK versions, this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the Conversation, but can be downloaded.

Larger images in FAQs will be slower to download and will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new Conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all issues Anonymous and disable attachments.

App won't load, "HSRetryService" errorThe error is due to HSRetryService class, which was removed in our most recent SDK versions. To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Some images from device can't be attached in an in-app conversationOn Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.

This is due to a known issue where there are issues attaching Google photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the google photos app. This has also been reported by other image picking libraries and seems to be a common issue faced by other android developers too.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

“Permission required” error when user attempts to attach screenshot
The Helpshift Android SDK requires WRITE_EXTERNAL_PERMISSION. For SDK v6.2.0 and above this permission is optional, and you can choose to not include this permission in your app’s manifest file. If storage permission is removed, the user experience will be as follows:

The “attach a file” icon will still display for the user, but the user will not be able to attach a file when they tap it.

Downloading Agent attachments will not show the download progress in the Conversation, but can be downloaded.

Larger images in FAQs will be slower to download and will depend on the device’s network speed at the time of viewing.

If a user uninstalls and reinstalls the app, they will only be able to start a new Conversation and not resume an open one.

For the best user experience, you’ll want to remove the “attach a file” icon because the user will not be able to use it after this code is added to the manifest. Currently, the only way to remove this icon is to implement the EnableFullPrivacy configuration we offer to make all issues Anonymous and disable attachments.

App won't load, "HSRetryService" errorThe error is due to HSRetryService class, which was removed in our most recent SDK versions. To avoid the error, do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

Some images from device can't be attached in SDK chat
On Android, occasionally there will be certain images that end users won't be able to attach via the SDK, while other images work fine.

This is due to a known issue where there are issues attaching Google photos from the cloud. This usually occurs when the file is not present in the device and is downloaded by the google photos app. This has also been reported by other image picking libraries and seems to be a common issue faced by other Android developers too..

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Also, if you’re not currently collecting logs, please enable logging by following these steps so we can help you debug! Once you've enabled debugging, review the solutions below against what appears in your logs.

java.lang.NullPointerException / Attempt to invoke virtual method on a null object reference
Please confirm where you've placed the Core#install call in your app. This error can sometimes arise if the Core#install happens after the ParentActivity is launched from the notification. It can be prevented by placing the install call in the onCreate() method of the overridden Application class, per our developer documentation on
Initializing your Android app.

“HSRetryService” error
The error is due to HSRetryService class, which was removed in our most recent SDK versions. Try to do a clean reinstall of the SDK in case traces of a previous build are causing this issue.

LeakCanary “memory leak” error
Confirm where you’ve added the install call -- The Helpshift install call should be in Application.onCreate() method. If this isn’t the problem and you contact the Helpshift support team, please include a snippet of the Helpshift code from your Application.java file in the report!

Fatal Exception: java.lang.IllegalStateException: Cannot perform this operation because there is no current transaction
Is your app multi-process? If so, review the following developer documentation:

Can't create handler inside thread that has not called Looper.prepare()
If you want to call registerDeviceToken on a worker thread, you can use the following code snippet. This will ensure that your worker thread is associated with a looper and it won’t crash.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Also, if you’re not currently collecting logs, please enable logging following these steps so we can help you debug! Once you've enabled debugging, review the solutions below against what appears in your logs.

Crash on "HSSearchDisplayController" with error "Terminating app due to uncaught exception 'NSUnknownKeyException', reason: this class is not key value coding-compliant for the key searchBar."
We have made some optimizations in our latest SDK packages involving utilizing the latest APIs and UI changes provided by Apple. This particular crash happens when developers make changes to the library without updating the rest of the contents of the package. As a result, the SDK attempts to use the outdated/deprecated resources (HSSearchDisplayController) rather than the updated UI resources, which causes a crash.
The solution to this is to use all of the latest resources shipped with the package, rather than only replacing the library. Let us know if this doesn't resolve your problem!

built without full bitcode
Make sure the SDK is configured to support bitcode, per our developer documentation on Cocoapods.

"warning: 'UILocalNotification' is deprecated"
This warning shouldn't cause any issues building the iOS project. In a future release, we will be moving to a newer UserNotifications framework to prevent this error. For now, it can safely be ignored!

"Location Manager has created on a dispatch queue executing on a thread other than the main thread"
This error is just a warning and can safely be ignored: it won't cause any performance issues in your app.

For context:
Helpshift uses the location manager to get the current location of the device. The location property of the CLLocationManger class gives us the last updated location. It does not wait for the location to be available. If not available, it returns nil. We do not listen to any events from the location manager. The warning is about the possibility of losing events if there is no run loop on the queue on which the CLLocationManager was instantiated. Since we are not listening to any events, this is a non-issue and the warning can be ignored.

"Unknown class HSSearchDisplayController" error
The class “HSSearchDisplayController,” was removed from our SDK in recent builds.
It’s possible that some reference to that file was still left in your project when you upgraded to this version; a *clean build* should fix it.

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'hsSupportMain' in bundle NSBundle
This crash log indicates that the storyboard is not added to the project. This usually happens when the bundle named "HsUIResourceBundle", found in the zipped folder you download with our SDK, is not added to the Xcode project. Please check that the file was added by reviewing our developer documentation on getting the SDK.

linker command failed with exit code 1
This "linker command failed" error is a generic error that the linker can throw for all kinds of issues. Here are a few of the most common ones:

Android App ID is being used for an iOS app (to check, go to your Dashboard and verify that you are indeed using the iOS app's install credentials for your iOS platform).

Project contains both libHelpshift.a and libSupport.a (if so, please try removing libHelpshift.a and see if this resolves the crash).

If you're seeing this after an SDK upgrade, please try removing the Helpshift SDK entirely and doing a fresh install.

If those don't seem to resolve the problem, we will need a more detailed error report from your side to help us debug this. You can pull this by archiving the app, which will fail. Then:

Go to Report Navigator in Xcode (the default shortcut is Cmd + 9).

Here, you will see an entry like “Archive helpShiftTest”. Click that and Xcode should a display a long list of all the steps it performed as part of archiving.

Find the line, or lines, that failed, select them all and right click. This should reveal a “Copy Transcripts…” option.

Copy the transcripts and send them over to us so that we can have a look at what failed.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Also, if you’re not currently collecting logs, please enable logging by following these steps so we can help you debug!

CommandInvokationFailure: Failed to re-package resources
This issue can happen if the ${applicationId} string is not replaced in Assets/Plugins/Android/helpshift/AndroidManifest.xml file.
Confirm that Assets/Plugins/Android/helpshift/AndroidManifest.xml does not contain any "${applicationId}" string. This placeholder is automatically replaced with the application bundle identifier if the build system used is gradle or if you are using Helpshift configurator for setting up the Helpshift SDK configuration. Review our developer documentation on adding a package name to the AndroidManifest.xml file.

“No package identifier when getting value for resource number / Resources$NotFoundException”Please review our developer documentation for an explanation of this error: Resource not found errorAlso make sure that, when using the Helpshift GUI to enter the SDK credentials, you are clicking the "Save Config" on the Edit Config page. Clicking on save config will generate JSON files for API and install config inside the helpshift/res/raw folder like this:
Assets/Plugins/Android/helpshift/res/raw/helpshiftapiconfig.json
Assets/Plugins/Android/helpshift/res/raw/helpshiftinstallconfig.json
If these files are not been being generated then it means "Save" config was not clicked resulting in the resource not found exception.

If you see this error message:
Error on Install: “Exception : com.helpshift.exceptions.InstallException: The api key used in the Core.install(application, apiKey, domain, appId) is not valid!
Or this one:

Exception: com.helpshift.exceptions.InstallException: The domain name used in the
Core.install(application, apiKey, domain, appId) is not valid!

It indicates that the domain name, app ID, or API key for your app is incorrect in your initialization code. Double-check your initialization code and make sure there are no errors, for example using the iOS API key instead of Android; typos in the domain name; etc.

java.lang.NullPointerException” / Attempt to invoke virtual method on a null object reference
Please confirm where you've placed the Core#install call in your app. This error can sometimes arise if the Core#install happens after the ParentActivity is launched from the notification. It can be prevented by placing the install call in the onCreate() method of the overridden Application class, per our developer documentation on
initializing the Unity SDK for Android.

Build issues when using AppsFlyer SDK, or error where 'HsUnityAppController::didFinishLaunchingWithOptions' is not properly called
Having 2 appControllers in the same project can cause this issue (we often see this issue with AppsFlyer, for example). The solution is to implement one single appController, which takes all relevant/important code from both of the other appControllers. In the end, this common appController should be present in the project and the other appControllers should be removed. To do this, you can copy the contents of HsUnityAppController to the for the other SDK. This has resolved the issue whenever we run into it.

“HSRetryService” error
The error is due to HSRetryService class, which was removed in our most recent SDK versions (Unity 2.7.0, Xamarin 2.3+, etc). We recommend doing a clean reinstall of the SDK in case traces of a previous build are causing this issue.

LeakCanary “memory leak” error
Confirm where you’ve added the install call -- The Helpshift install call should be in Application.onCreate() method. If this isn’t the problem and you contact the Helpshift support team, please include a snippet of the Helpshift code from your Application.java file in the report!

Fatal Exception: java.lang.IllegalStateException: Cannot perform this operation because there is no current transaction
Is your app multi-process? If so, review the following developer documentation:

Can't create handler inside thread that has not called Looper.prepare()
If you want to call registerDeviceToken on a worker thread, you can use the following code snippet. This will ensure that your worker thread is associated with a looper and it won’t crash.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Also, if you’re not currently collecting logs, please enable logging by following these steps so we can help you debug!

Crash on "HSSearchDisplayController" with error "Terminating app due to uncaught exception 'NSUnknownKeyException', reason: this class is not key value coding-compliant for the key searchBar."
We have made some optimizations in our latest SDK packages involving utilizing the latest APIs and UI changes provided by Apple. This particular crash happens when developers make changes to the library without updating the rest of the contents of the package. As a result, the SDK attempts to use the outdated/deprecated resources (HSSearchDisplayController) rather than the updated UI resources, which causes a crash.
The solution to this is to use all of the latest resources shipped with the package, rather than only replacing the library. Let us know if this doesn't resolve your problem!

Warning: 'UILocalNotification' is deprecated'
This warning shouldn't cause any issues building the iOS project. In a future release, we will be moving to a newer UserNotifications framework to prevent this error. For now, it can safely be ignored!

built without full bitcode
Make sure the SDK is configured to support bitcode, per our developer documentation on bitcode support for iOS.

Location Manager has created on a dispatch queue executing on a thread other than the main thread
This error is just a warning and can safely be ignored: it won't cause any performance issues in your app.

For context:
Helpshift uses the location manager to get the current location of the device. The location property of the CLLocationManger class gives us the last updated location. It does not wait for the location to be available. If not available, it returns nil. We do not listen to any events from the location manager. The warning is about the possibility of losing events if there is no run loop on the queue on which the CLLocationManager was instantiated. Since we are not listening to any events, this is a non-issue and the warning can be ignored.

“Not a PNG file"/pngcrush error
Unity sometimes adds Android resources to an xcode project. This will cause compilation issues for the PNG crush tool. This issue occurs when Apple converts traditional PNG images to an optimized CgBI format using a proprietary version of the public domain pngcrush tool making the file different from the PNG standards. This optimization reduces the size of the PNG image by almost half, making our asset folder very small in size. When Android resources are added into xcode project, the PNG crush tool is not able to read the format of the files.
The solution for this issue is to unselect iOS from the file inspector for assets which are used by Android. For more details on the root issue, please refer to this Stackoverflow solution on this PNG crush error.

The class “HSSearchDisplayController,” was removed from our SDK in recent builds.
It’s possible that some reference to that file was still left in your project when you upgraded to this version; a *clean build* should fix it.

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'hsSupportMain' in bundle NSBundle
This crash log indicates the storyboard is not added to the project. This happens because the bundle named HsUIResourceBundle found in our plugin is not added to the Xcode project. This is due to the fact that Unity 5.4 does not have the platform set to iOS for bundles. For details, you can also refer to our developer documentation on this error.

linker command failed with exit code 1
This "linker command failed" error is a generic error that the linker can throw for all kinds of issues. Here are a few of the most common ones:

Android App ID is being used for an iOS app (to check, go to your dashboard and verify that you are indeed using the iOS app's install credentials for your iOS platform)

Project contains both libHelpshift.a and libSupport.a (if so, please try removing libHelpshift.a and see if this resolves the crash)

If you're seeing this after an SDK upgrade, please try removing the Helpshift SDK entirely and doing a fresh install.

If those don't seem to resolve the problem, we will need a more detailed error report from your side to help us debug this. You can pull this by archiving the app, which will fail. Then:

Go to Report Navigator in Xcode (Default shortcut is Cmd + 9).

Here, you will see an entry like “Archive helpShiftTest”. Click that and Xcode should a display a long list of all the steps it performed as part of archiving.

Find the line, or lines, that failed, select them all and right click. This should reveal a “Copy Transcripts…” option.

Copy the transcripts and send them over to us so that we can have a look at what failed.

Please review the solutions below. If they don’t work, let us know and we will provide options for you to reach out to our support team.

Also, if you’re not currently collecting logs, please enable logging by following these steps so we can help you debug!

java.lang.NullPointerException” / Attempt to invoke virtual method on a null object reference
Please confirm where you've placed the Core#install call in your app. This error can sometimes arise if the Core#install happens after the ParentActivity is launched from the notification. It can be prevented by placing the install call in the onCreate() method of the overridden Application class, per our developer documentation on
Initializing Xamarin for Android.

LeakCanary “memory leak” error
Confirm where you’ve added the install call -- The Helpshift install call should be in Application.onCreate() method. If this isn’t the problem and you contact the Helpshift support team, please include a snippet of the Helpshift code from your Application.java file in the report!

Fatal Exception: java.lang.IllegalStateException: Cannot perform this operation because there is no current transaction
Is your app multi-process? If so, review the following developer documentation:

Can't create handler inside thread that has not called Looper.prepare()
If you want to call registerDeviceToken on a worker thread, you can use the following code snippet. This will ensure that your worker thread is associated with a looper and it won’t crash.

Please review the list of common errors and known issues below. If none of them match the exceptions/logs you’re seeing during integration, let us know and we will provide options for you to reach out to our support team.
Also, if you’re not currently collecting logs, please enable logging by following these steps so we can help you debug!

Crash on "HSSearchDisplayController" with error "Terminating app due to uncaught exception 'NSUnknownKeyException', reason: this class is not key value coding-compliant for the key searchBar."
We have made some optimizations in our latest SDK packages involving utilizing the latest APIs and UI changes provided by Apple. This particular crash happens when developers make changes to the library without updating the rest of the contents of the package. As a result, the SDK attempts to use the outdated/deprecated resources (HSSearchDisplayController) rather than the updated UI resources, which causes a crash.
The solution to this is to use all of the latest resources shipped with the package, rather than only replacing the library. Let us know if this doesn't resolve your problem!

built without full bitcode
Make sure the SDK is configured to support bitcode, per our developer documentation on adding bitcode support.

"warning: 'UILocalNotification' is deprecated"
This warning shouldn't cause any issues building the iOS project. In a future release, we will be moving to a newer UserNotifications framework to prevent this error. For now, it can safely be ignored!

"Location Manager has created on a dispatch queue executing on a thread other than the main thread"
This error is just a warning and can safely be ignored: it won't cause any performance issues in your app.

For context:
Helpshift uses the location manager to get the current location of the device. The location property of the CLLocationManger class gives us the last updated location. It does not wait for the location to be available. If not available, it returns nil. We do not listen to any events from the location manager. The warning is about the possibility of losing events if there is no run loop on the queue on which the CLLocationManager was instantiated. Since we are not listening to any events, this is a non-issue and the warning can be ignored.

"Unknown class HSSearchDisplayController" error
The class “HSSearchDisplayController,” was removed from our SDK in recent builds.
It’s possible that some reference to that file was still left in your project when you upgraded to this version; a *clean build* should fix it.

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'hsSupportMain' in bundle NSBundle
This crash log indicates that the storyboard is not added to the project. This usually happens when the bundle named "HsUIResourceBundle", found in the zipped folder you download with our SDK, is not added to the Xcode project. Please check that the file was added by reviewing our developer documentation.

linker command failed with exit code 1
This "linker command failed" error is a generic error that the linker can throw for all kinds of issues. Here are a few of the most common ones:

Android App ID is being used for an iOS app (to check, go to your dashboard and verify that you are indeed using the iOS app's install credentials for your iOS platform)

Project contains both libHelpshift.a and libSupport.a (if so, please try removing libHelpshift.a and see if this resolves the crash)

If you're seeing this after an SDK upgrade, please try removing the Helpshift SDK entirely and doing a fresh install.

If those don't seem to resolve the problem, we will need a more detailed error report from your side to help us debug this. You can pull this by archiving the app, which will fail. Then:

Go to Report Navigator in Xcode (Default shortcut is Cmd + 9).

Here, you will see an entry like “Archive helpShiftTest”. Click that and Xcode should a display a long list of all the steps it performed as part of archiving.

Find the line, or lines, that failed, select them all and right click. This should reveal a “Copy Transcripts…” option.

Copy the transcripts and send them over to us so that we can have a look at what failed.

Please review the list of common errors and known issues below. If none of them match the exceptions/logs you’re seeing during integration, let us know and we will provide options for you to reach out to our support team.

Also, if you’re not currently collecting logs, please enable logging by following these steps so we can help you debug!

java.lang.NullPointerException” / Attempt to invoke virtual method on a null object reference
Please confirm where you've placed the Core#install call in your app. This error can sometimes arise if the Core#install happens after the ParentActivity is launched from the notification. It can be prevented by placing the install call in the onCreate() method of the overridden Application class, per our developer documentation on
Initializing Cocos2d-x for Android.

“HSRetryService” error
The error is due to HSRetryService class, which was removed in our most recent SDK versions. We recommend that you try doing a clean reinstall of the SDK.

LeakCanary “memory leak” error
Confirm where you’ve added the install call -- The Helpshift install call should be in Application.onCreate() method. If this isn’t the problem and you contact the Helpshift support team, please include a snippet of the Helpshift code from your Application.java file in the report!

Fatal Exception: java.lang.IllegalStateException: Cannot perform this operation because there is no current transaction
Is your app multi-process? If so, review the following developer documentation:

Can't create handler inside thread that has not called Looper.prepare()
If you want to call registerDeviceToken on a worker thread, you can use the following code snippet. This will ensure that your worker thread is associated with a looper and it won’t crash.

Please review the list of common errors and known issues below. If none of them match the exceptions/logs you’re seeing during integration, let us know and we will provide options for you to reach out to our support team.

Also, if you’re not currently collecting logs, please enable logging by following these steps so we can help you debug!

Crash on "HSSearchDisplayController" with error "Terminating app due to uncaught exception 'NSUnknownKeyException', reason: this class is not key value coding-compliant for the key searchBar."
We have made some optimizations in our latest SDK packages involving utilizing the latest APIs and UI changes provided by Apple. This particular crash happens when developers make changes to the library without updating the rest of the contents of the package. As a result, the SDK attempts to use the outdated/deprecated resources (HSSearchDisplayController) rather than the updated UI resources, which causes a crash.
The solution to this is to use all of the latest resources shipped with the package, rather than only replacing the library. Let us know if this doesn't resolve your problem!

built without full bitcode
Make sure the SDK is configured to support bitcode, per our developer documentation on iOS bitcode support.

"warning: 'UILocalNotification' is deprecated"
This warning shouldn't cause any issues building the iOS project. In a future release, we will be moving to a newer UserNotifications framework to prevent this error. For now, it can safely be ignored!

"Location Manager has created on a dispatch queue executing on a thread other than the main thread"
This error is just a warning and can safely be ignored: it won't cause any performance issues in your app.

For context:
Helpshift uses the location manager to get the current location of the device. The location property of the CLLocationManger class gives us the last updated location. It does not wait for the location to be available. If not available, it returns nil. We do not listen to any events from the location manager. The warning is about the possibility of losing events if there is no run loop on the queue on which the CLLocationManager was instantiated. Since we are not listening to any events, this is a non-issue and the warning can be ignored.

"Unknown class HSSearchDisplayController" error
The class “HSSearchDisplayController,” was removed from our SDK in recent builds.
It’s possible that some reference to that file was still left in your project when you upgraded to this version; a *clean build* should fix it.

Terminating app due to uncaught exception NSInvalidArgumentException, reason: *** setObjectForKey: object cannot be nil
If you are seeing app crashes just after launching the app, please make sure to set the CFBundleShortVersionString (Bundle versions string, short) in the -Info.plist file of your XCode project. See our developer documentation on troubleshooting the CFBundleShortVersionString crash for more details.

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'hsSupportMain' in bundle NSBundle
This crash log indicates that the storyboard is not added to the project. This usually happens when the bundle named "HsUIResourceBundle", found in the zipped folder you download with our SDK, is not added to the Xcode project. Please check that the file was added by reviewing our developer documentation.

linker command failed with exit code 1
This "linker command failed" error is a generic error that the linker can throw for all kinds of issues. Here are a few of the most common ones:

Android App ID is being used for an iOS app (to check, go to your dashboard and verify that you are indeed using the iOS app's install credentials for your iOS platform)

Project contains both libHelpshift.a and libSupport.a (if so, please try removing libHelpshift.a and see if this resolves the crash)

If you're seeing this after an SDK upgrade, please try removing the Helpshift SDK entirely and doing a fresh install.

If those don't seem to resolve the problem, we will need a more detailed error report from your side to help us debug this. You can pull this by archiving the app, which will fail. Then:

Go to Report Navigator in Xcode (Default shortcut is Cmd + 9).

Here, you will see an entry like “Archive helpShiftTest”. Click that and Xcode should a display a long list of all the steps it performed as part of archiving.

Find the line, or lines, that failed, select them all and right click. This should reveal a “Copy Transcripts…” option.

Copy the transcripts and send them over to us so that we can have a look at what failed.

Please review the list of common errors and known issues below. If none of them match the exceptions/logs you’re seeing during integration, let us know and we will provide options for you to reach out to our support team.

App crashes when selecting a screenshot
The Helpshift SDK uses UIImagePickerController, which supports portrait mode only. This means if the interface orientations supported by your application do not include portrait mask, then while choosing a screenshot the application will crash.

So please make sure that your application's list of supported interface orientations does not exclude portrait out. You can learn more about how to avoid this crash in our developer documentation on the Orientation fix.