Looking for older SDK 3.X docs? Click here →

Getting Started

Or, follow these simple steps to add Helpshift in-app support to your iOS App right away -

Automated Integration using Cocoapods

To start using Helpshift v6.3.0 in your project, add one of the following lines to your Podfile according to the version which you wish to integrate.

pod 'Helpshift', '6.3.0'            # For normal version
pod 'Helpshift', '6.3.0-bitcode'    # For bitcode version
pod 'Helpshift', '6.3.0-xcode6'     # For Xcode 6 version

And run pod install or pod update to refresh your cocoapods dependencies.

You can now move on to Initializing Helpshift in your App.

Manual Integration

Get the latest SDK zip

Download the latest for the Helpshift iOS SDK.

Download SDK v6.3.0

The zip file contains

HelpshiftSupport.h
Support API header file
HelpshiftCampaigns.h
Campaigns API header file
HelpshiftCore.h
Core API header file
libHelpshift.a
Bitcode in-compatible version of the Helpshift library
libHelphsift-bitcode.a
Bitcode compatible version of the Helpshift library
libHelpshift-xcode6.a
Xcode 6 compatible version of the Helpshift library
HsUIResourcesBundle
Bundle file containing images and XIB files used by the SDK
HsLocalization
Bundle file containing the default Helpshift translation files.
HSThemes/
Folder containing skinning configuration to match the design of your app
HelpshiftDefaultLocalizations/
Folder containing language translations which can be used to create the HelpshiftCustomLocalization bundle. This is just for reference.
NOTICE.txt/
License information about third-party code.

Add the latest stable SDK release to your project

  • Unzip the sdk & drag-drop all the header files, libHelpshift.a, HsUIResourceBundle.bundle, HSThemes/ and HsLocalization.bundle files into your Xcode project.
  • In Build Phases, verify that libHelpshift.a is in the Link Binary with Libraries and the Helpshift resources are in Copy Bundle Resources
  • Add the following frameworks to Link Binary with Libraries -

    • CoreGraphics
    • QuartzCore
    • CoreText
    • SystemConfiguration
    • CoreTelephony
    • UIKit
    • libsqlite3.tbd
    • libicucore.tbd (needed only for v6.0.0 or later)
    • libz.tbd
    • Security
    • QuickLook
    • CoreLocation
    • MobileCoreServices
    • CoreSpotlight
    • Photos (needed only for v5.10.0 or later)
    • WebKit (needed only for v5.10.0 or later)
  • Add -ObjC flag to the Other Linker Flags under Build Settings section.

    Explanation : The Helpshift SDK defines its own categories and uses method swizzling internally to listen to some application delegates required for doing background data syncing. Apple guidelines are still unclear about the usage of method swizzling but we have independently confirmed that usage itself is not grounds for rejection in the app review. They take into account the purpose and scope of the swizzled methods and only reject if the application code appears to use hidden APIs or do some other malicious activity. Which we do not!

Please note that SDK may crash if HsUIResourceBundle.bundle file is not inlcuded in your project or is not updated to the correct version required by your current SDK version.

Add only required theme from HSThemes

HSThemes folder contains two files, HelpshiftConfig.plist and HelpshiftConfigDark.plist. Depending on your app theme, you can just keep one file in the project and remove the other.

CFBundleExectuable errors while submitting the App

Applicable to version 5.5.0

Some customers have reported seeing errors like below when you submit your app with Helpshift to the App store.

ERROR ITMS-90535: "Unexpected CFBundleExecutable Key.
The bundle at 'Example.app/HsUIResourceBundle.bundle' does not contain a bundle executable.
If this bundle intentionally does not contain an executable, consider removing the CFBundleExecutable key from its Info.plist and using a CFBundlePackageType of BNDL.
If this bundle is part of a third-party framework, consider contacting the developer of the framework for an update to address this issue."

To eliminate this error, please follow the below mentioned steps.

  1. Navigate to the HsUIResourceBundle file via the Finder
  2. Open the bundle file by doing Show Package Contents
  3. Open the Info.plist file via an external editor
  4. Find and remove the CFBundleExecutable key and its value string

App crashes after attachment button is tapped

Applicable to version 5.7.0 and above on iOS 10 beta

Add NSPhotoLibraryUsageDescription key in you application info plist file

Add NSPhotoLibraryUsageDescription key in your application info plist file

If your app does not use this permission, you would need to add this key as well as description for the same. Not adding this key-description pair might cause app rejection.

Description text: “We need to access photos library to allow users manually pick images meant to be sent as attachment for help and support reasons.”

Note that this is just a suggested description. If you need localisations for the same, please contact support@helpshift.com

Helpshift is now ready to help you have conversations with your users! Head over to Initializing Helpshift in your App.

Integrating with a Swift Project

If you are working in Swift, you can use Helpshift with the mix and match feature. Mix and match works by using an Objective-C bridging header to expose the required Objective-C files to your Swift code.

In case you already have an Objective-C bridging header set up in your project you can skip to Step 2.

Adding an Objective-C bridging header

If your project does not already bridge to Objective-C, you will need to create a bridging file and let Xcode know. Add a new Header file to your project.

This will be your Objective-C bridging header so you can name it something appropriate like ObjC-Bridge.h.

Next, in your project's Build Settings look for Objective-C Bridging Header under Swift Compiler - Code Generation.

Add the path to your bridge file. The path needs to be relative to your project. For example, if the project name is Helpshift-Demo and the bridge is ObjC-Bridge.h, then the path should be: Helpshift-Demo/ObjC-Bridge.h

Add Helpshift to the Objective-C bridging header

Inside your Objective-C bridging header, add these lines:

#import "HelpshiftAll.h"
#import "HelpshiftSupport.h"
#import "HelpshiftCore.h"

You are now ready to start using Helpshift in your Swift code. For example, you can use the initialisation function this way:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    ...
    HelpshiftCore.initializeWithProvider(HelpshiftAll.sharedInstance())
    HelpshiftCore.installForApiKey("YOUR_API_KEY",
        domainName: "YOUR_HELPSHIFT_DOMAIN",
        appID: "YOUR_APP_ID")
    ...

    return true
}

Supported iOS versions

Helpshift SDK supports following versions of iOS :

Start using Helpshift

Helpshift is now integrated in your app and ready to collect meaningful data about your users.

Initializing Helpshift in your app

Helpshift uniquely identifies each registered App using a combination of 3 tokens:

API Key
Your unique developer API Key
Domain Name
Your Helpshift domain name without any http: or slashes. E.g. happyapps if your account is happyapps.helpshift.com
App ID
Your App's unique ID

You can find these tokens by navigating to Settings>SDK (for Developers) in your agent dashboard. Select your App and the correct platform from the dropdowns and copy the 3 tokens to be passed when initializing Helpshift. show me

Initialize Helpshift by calling the HelpshiftCore's install function:

  1. Initialize the HelpshiftCore with the Helpshift service that you want to use.
  2. Call the HelpshiftCore's install function.

Currently we have HelpshiftCampaigns and HelpshiftSupport as the 2 available services.

#import "HelpshiftCore.h"

...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...

    [HelpshiftCore initializeWithProvider:[HelpshiftAll sharedInstance]];
    [HelpshiftCore installForApiKey:@"YOUR_API_KEY" domainName:@"YOUR_HELPSHIFT_DOMAIN" appID:@"YOUR_APP_ID"];
    ...

    return YES;
}

Placing the install call

You should not place the install call anywhere other than application:didFinishLaunchingWithOptions: Placing it elsewhere might cause unexpected runtime problems. From version 5.7.0 and above the Helpshift install call will throw InstallException in case the validation of the SDK keys fail.

Support APIs

If you want to add support sections inside your app with Helpshift, you can use the HelpshiftSupport APIs. All the APIs which were available in the Helpshift class are now available in the new HelpshiftSupport class.

For example:

[HelpshiftSupport showConversation:viewController withConfig:configObject];

[HelpshiftSupport showConversation:viewController withOptions:optionsDictionary];

Troubleshooting

If you are having issues with Helpshift integration, head over to the Troubleshooting section for further information.

Next up

Helpshift APIs

Discover ways to do customer support via Helpshift.

Design

Theming and Skinning your SDK to look like your App.

Going International

Localizing & Internationalizing your in-app Support.

Notifications

Configure Push and In-app notifications.

Tracking

Track events and user actions. Attach custom metadata to every conversation.

Reviews & Feedback

Asking for reviews and feedback.