Awesome
GBFeatureManager
Simple iOS and Mac OS X feature manager for unlocking functionality (e.g. for IAP purchases).
Usage
Unlock a feature (all features are locked by default):
[GBFeatureManager unlockFeature:@"speedBoost"];
Lock a feature:
[GBFeatureManager lockFeature:@"speedBoost"];
Check to see if a feature is unlocked:
[GBFeatureManager isFeatureUnlocked:@"speedBoost"]; //Returns: YES or NO
If you want to unlock all features + any future features, think of it as an "all features unlocked override" (N.B. this will supersede any individual setting):
[GBFeatureManager enableWildcardFeatureOverride];
To turn off the "all features unlocked override":
[GBFeatureManager disableWildcardFeatureOverride];
To enabled features by default (e.g. Pro version), you can unlock some features directly in the Info.plist by adding it as a key to the Plist, prefixed by GBFeatureManager:
and setting the value to a Boolean.
<key>GBFeatureManager:com.goonbee.proVersion</key>
<true/>
...normally you would do this in Xcode's Plist editor by simply adding a new row with the key GBFeatureManager:com.goonbee.proVersion
, setting the type to Boolean
and the value to either YES
or NO
.
Don't forget to import header, for iOS:
#import "GBFeatureManager.h"
... or on OSX:
#import <GBFeatureManager/GBFeatureManager.h>
Storage mechanics
Features are each stored to disk in simple serialized NSNumber objects to the NSDocumentsDirectory on iOS, or NSApplicationSupportDirectory OS X.
When checking whether a feature is available, the disk is only accessed the first time, and the result is cached in memory, subsequent checks never hit the disk.
Dependencies
iOS: Add to your project's workspace, add dependency for GBToolbox-iOS and GBStorageController-iOS, link with your binary, add -ObjC linker flag, add header search path.
OS X: Add to your project's workspace, add dependency for GBToolbox-OSX and GBStorageController-OSX, link with your binary, add "copy file" step to copy framework into bundle.
Copyright & License
Copyright 2013 Luka Mirosevic
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.