CocoaPods trunk is moving to be read-only. Read more on the blog, there are 17 months to go.
TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | Custom |
ReleasedLast Release | Dec 2014 |
Maintained by Michael Shkutkov.
Glazum is a simple and effective tool for collecting feedback from your iOS users. Ask them any question you like at any moment you wish!
Just create new question, bind it to a marker in your app and decide who and when should see it. All answers get collected and processed automatically. You can see and manage them in the dashboard page in real time.
An example of Glazum API usage you can see on Github
Information gathered by the SDK is sent to the Glazum website in real time.
Glazum SDK works with iOS 6+, armv7+armv7s and arm64, with both device and simulator support. It has been tested using Xcode 5.x
Project dependencies to be managed by CocoaPods are specified in a file called Podfile. Create this file in the same directory as your Xcode project (.xcodeproj) file:
$ edit Podfile
pod 'Glazum', '~> 0.3'`
Now you can install the dependencies in your project:
$ pod install
From now on, be sure to always open the generated Xcode workspace (.xcworkspace) instead of the project file when building your project:
$ open YourProject.xcworkspace
In your Application Delegate:
Import Glazum: #import <Glazum/Glazum.h>
NOTE: Rather than importing Glazum/Glazum.h
in every file you may add the above line into you pre-compiled header (<projectname>_Prefix.pch
) file inside of the
#ifdef __OBJC__
section. This will give you access to the SDK across all files.
Launch Glazum with your Application ID
Place named markers wherever you need in your code. Later you will bind questions to these markers.
[Glazum setMarker:@"button pressed"];
Markers in the code identify places where Glazum is allowed to show questions. Please note that it doesn’t mean that a question will be shown every time the marker’s code is executed. Glazum allows you to set a list of conditions required to show a question to the user. The question will be shown only when all these conditions are met.
Setting markers is a one-time operation. You don’t need to do any code changes to your app in order to add/edit or turn on/off questions. Our advice is to set as many markers as possible.
Please note, that there are two system markers :app launched and :app entered foreground. Therefore there is no need manually set markers for these events.
If you wonder how question will look like in your app, just use:
[Glazum testQuestionWithType:kQuestionWithSingleLineTextAnswer];
where kQuestionWithSingleLineTextAnswer
is one of the five available question types:
typedef enum {
kQuestionWithSingleLineTextAnswer,
kQuestionWithMultiLineTextAnswer,
kQuestionWithSingleAnswerSelection,
kQuestionWithMultipleAnswerSelection,
kQuestionWithNetPromoterScore
}GlazumQuestionType;
You can specify code blocks that will be called before and after a question is shown.
doBefore block takes one boolean argument willShowQuestion. When it's true, the question will be asked right after this block is executed. doAfter block takes one argument questionWasShown. If questionWasShown is true, the question was actually shown.
Using doBefore/doAfter may be useful for preparing your app for showing question and resuming its previous state after the question is shown.
[Glazum setMarker:@"button pressed"
doBefore:^(BOOL willShowQuestion) {
//prepare application for the question to be asked
}
doAfter:^(BOOL questionWasShown) {
//cleanup everything and restore previous state
}];
Please note, that you can pass nil instead of either doBefore or doAfter.
[Glazum setMarker:@"button pressed"
doBefore:nil
doAfter:^(BOOL questionWasShown) {
//cleanup everything and resume your app
}];
If your app in some way indentify users, you can do this with Glazum too. For example, to identify the user with his email (authenticate) just call:
[Glazum setUserIdentifier:@"[email protected]"];
When Glazum:setUserIdentifier is called, user identifier value is stored permantently and applied to all markers that are executed afterwards. To remove user identifier (for example to deauthenticate user) just call setUserIdentifier with nil argument:
[Glazum setUserIdentifier:nil];
Aside from identifying your app's users, you can set question showing criteria based on a custom variable. To use custom variables just call:
[Glazum setCustomVariable:@"true" named:@"ab test share"];
The value will be stored permanently. To remove it call setCustomVariable with nil variable argument:
[Glazum setCustomVariable:nil named:@"ab test share"];
If you need Glazum log messages in your console, just set GlazumOptionDebug option like this:
[Glazum setOptions:@{GlazumOptionDebug:@YES}];
If you have your own custom logger, you can set custom block to receive all debug messages
[Glazum setOptions:@{GlazumOptionDebugLogHandler:^(NSString *message) {
//your custom debug logger logic
}
}];