iOS Survey Wall Preview
If your app is in test mode, you MUST use a test user. These are defined in "Test Devices" on the dashboard.
If you are experiencing issues or need assistance, please reach out to developers@tapresearch.com
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:
- 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:
- 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:
- 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:
- 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:
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.

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:
- Swift
- Objective-C
TapResearch.hasSurveys(for placementTag: <#String#>, errorHandler: <#((NSError?) -> Void)? = nil#>) -> Bool {
}
BOOL hasSurveys = [TapResearch hasSurveysFor:<#(NSString * _Nonnull)#> errorHandler:<#^(NSError * _Nullable)errorHandler#>];
Getting available surveys
Get the surveys for your placement.
- Swift
- Objective-C
TapResearch.getSurveys(for placementTag: <#String#>, errorHandler: <#((NSError?) -> Void)? = nil#>) -> [TRSurvey] {
}
NSArray *surveys = [TapResearch getSurveysFor:<#(NSString * _Nonnull)#> errorHandler:<#^(NSError * _Nullable)errorHandler#>];
Check that a survey can be shown
Before showing, it is always best to check if the survey can be shown using canShowSurvey
:
- Swift
- Objective-C
TapResearch.canShowSurvey(surveyId: <#String#>, forPlacementTag placementTag: <#String#>) -> Bool {
}
BOOL canShow = [TapResearch canShowSurveyWithSurveyId:<#(NSString * _Nonnull)#> forPlacementTag:<#(NSString * _Nonnull)#>];
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.
- Swift
- Objective-C
TapResearch.showSurvey(surveyId: <#String#>,
forPlacementTag placementTag: <#String#>,
delegate: <#TapResearchContentDelegate#>,
errorHandler: <#((NSError?) -> Void)? = nil#>)
{
}
[TapResearch showSurveyWithSurveyId:<#(NSString * _Nonnull)#>
placementTag:<#(NSString * _Nonnull)#>
delegate:<#(id<TapResearchContentDelegate> _Nonnull)#>
errorHandler:<#^(NSError * _Nullable)errorHandler#>];
If you need to pass custom parameters use:
- Swift
- Objective-C
TapResearch.showSurvey(surveyId: <#String#>,
forPlacementTag placementTag: <#String#>,
delegate: <#TapResearchContentDelegate#>,
customParameters: <#[AnyHashable:Any]#>,
errorHandler: <#((NSError?) -> Void)? = nil#>)
{
}
[TapResearch showSurveyWithSurveyId:<#(NSString * _Nonnull)#>
placementTag:<#(NSString * _Nonnull)#>
delegate:<#(id<TapResearchContentDelegate> _Nonnull)#>
customParameters:<#(NSDictionary * _Nonnull)#>
errorHandler:<#^(NSError * _Nullable)errorHandler#>];
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
:
- Swift
- Objective-C
TapResearch.setSurveysDelegate(_ delegate: <#TapResearchSurveysDelegate?#>) {
}
[TapResearch setSurveysDelegate:<#(id<TapResearchSurveysDelegate> _Nullable)#>];
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
:
- Swift
- Objective-C
func onTapResearchSurveysRefreshed(forPlacement placementTag: String) {
}
- (void)onTapResearchSurveysRefreshedForPlacement:(NSString *)placementTag {
}