Skip to main content
Version: 3.x

iOS Survey Wall Preview

Notes on apps in test mode!

If your app is in test mode, you MUST use a test user. These are defined in "Test Devices" on the dashboard.

Support

If you are experiencing issues or need assistance, please reach out to developers@tapresearch.com

Enabling Survey Wall Preview

Survey Wall Preview is a recently released feature in SDKs v3.4.2 and higher. In order to use this feature, you must be enabled by your TapResearch account rep. If you are interested in this feature, please reach out to developers@tapresearch.com.

Installation

See here for TapResearch SDK for iOS integration documentation.

Example apps are available here

Survey Wall Preview

The Survey Wall Preview allows you to:

  • Provide a quicker path into surveys.
  • Create your own native presentation to list surveys. We send 5 surveys maximum.

At its most-basic level: you call the SDK to get the available surveys for a placement, these are returned to you as an array of TRSurvey objects which you can use to feed your native display:

@objc public final class TRSurvey : NSObject, Codable {

@objc public let surveyIdentifier : String
@objc public let lengthInMinutes : Int
@objc public let rewardAmount : Double
@objc public let currencyName : String
// Attibutes below available in version 3.6.0--rc2 or higher
@objc public let isHotTile : Bool
@objc public let isSale : Bool
@objc public let saleMultiplier : Double
@objc public let preSaleRewardAmount : Double
@objc public let saleEndDate : String?
}

Survey Wall Preview Best Practices

A few things to know before you begin:

  • You must be on IOS 3.4.2 or higher to have access to Survey Wall Preview.
  • The preview feature needs to be enabled and set up by the TapResearch team so please reach out to your account manager when you are ready to get started
  • We recommend a split test for this functionality to see how it performs relative to the existing survey wall placement for all of our current publishers

There are a number of considerations when setting up survey tiles/cards in your own experience. Let’s go through each one:

  • The Profile Survey
    • Before a user can gain access to any more surveys, they must first complete the Profile Survey. We will only pass you this campaign if the user is brand new to us.
    • This is how we display the profile natively:
      Profile tile preview
  • LOI (Length of interview), Currency Name, and Reward Amount
    • We pass these values that can be shown on the tiles/cards as well. It is your decision whether you want to display them but we recommend displaying all three. This way a user can decide how much time they want to spend earning how much of a particular currency.
    • This is how we display the tiles/cards natively:
      Tiles preview
  • Hot Tiles (version 3.6.0--rc2 or higher)
    • We have a notion of ‘Hot’ survey tiles when surveys have a particularly great score and are the best surveys for the user based on time and reward. This is an entirely optional field and does not need to be used but we find it excites users and gets them to click on these tiles in particular resulting in a better user experience.
    • This is how we display hot tiles natively:
      Hot tile
  • Currency Sales (version 3.6.0--rc2 or higher)
    • When you decide to run a currency sale on our platform, we want to be sure the user base knows what the value for the tile would have been and what they are getting with the sale multiplier for the time the sale is running. This is also an optional field but should you ever want to run a currency sale for your user base, you will want to make sure this is set up.
    • This is how we display currency sales natively:
      Currency Sale Preview
  • More TapResearch Surveys
    • This will be a direct link to a survey wall placement and will let users see even more surveys than the 5 available natively. See the set up for manual survey wall placements in the documentation here.
    • This is how we display the link to more TapResearch surveys natively:
      Survey Wall Placement
Support

Any other questions? Reach out to your account manager or via Slack and we’ll be happy to help!

Setting up a split test

In order to set up a split test with the preview tiles, target the survey wall placement tile at 50% percent of your users in the publisher dashboard and the survey wall preview tiles at the other 50%. To do this, contact your Account Manager and they will set it up for you on the dashboard.

Audience Targeting

Note: For the split test, you will need to include calls to both Survey Wall Preview and Survey Wall Placement.

After the sdk is initialized, show the survey wall preview if TapResearch.hasSurveys('preview-placement-tag') returns true for your preview placement. See sdk interfaces below. Otherwise, show your placement for the survey wall.

Integration

SDK Interfaces

Checking for available surveys

When you have received notification that the SDK is ready (see here) you should first check if there are surveys available for your placement:

View in context

TapResearch.hasSurveys(for placementTag: <#String#>, errorHandler: <#((NSError?) -> Void)? = nil#>) -> Bool {
}

Getting available surveys

Get the surveys for your placement.

View in context

TapResearch.getSurveys(for placementTag: <#String#>, errorHandler: <#((NSError?) -> Void)? = nil#>) -> [TRSurvey] {
}

Check that a survey can be shown

Before showing, it is always best to check if the survey can be shown using canShowSurvey:

View in context

TapResearch.canShowSurvey(surveyId: <#String#>, forPlacementTag placementTag: <#String#>) -> Bool {
}

Showing a survey

Showing a survey works similarly to showContent used for showing TapResearch survey content: after checking if a survey can be shown, call showSurvey with a survey ID, placement tag and a content delegate to receive onTapResearchContentShown and onTapResearchContentDismissed callbacks, for more information about these callbacks see here.

View in context

TapResearch.showSurvey(surveyId: <#String#>,
forPlacementTag placementTag: <#String#>,
delegate: <#TapResearchContentDelegate#>,
errorHandler: <#((NSError?) -> Void)? = nil#>)
{
}

If you need to pass custom parameters use:

View in context

TapResearch.showSurvey(surveyId: <#String#>,
forPlacementTag placementTag: <#String#>,
delegate: <#TapResearchContentDelegate#>,
customParameters: <#[AnyHashable:Any]#>,
errorHandler: <#((NSError?) -> Void)? = nil#>)
{
}

Callback

Survey Wall Preview adds an optional callback that lets you know when surveys have been refreshed.

Setting the delegate

You can set the delegate using setSurveysDelegate:

View in context

TapResearch.setSurveysDelegate(_ delegate: <#TapResearchSurveysDelegate?#>) {
}

To remove the delegate call the setSurveysDelegate with nil.

Handling the callback

You will see calls to the callback function when surveys have been completed, after any TapResearch content has been dismissed.

Make sure the delegate object implements TapResearchSurveysDelegate:

View in context

func onTapResearchSurveysRefreshed(forPlacement placementTag: String) {
}