Search code examples
iosmixpaneltweak

MPTweakValue without internet


I try to implement Mixpanel's tweaks into my app for A/B testing. This is my code:

if (MPTweakValue(kFeaturedOffersTweak, NO)) {
    return MenuItemRowHeight;
}
else {
    return 0;
}

On the first lunch everything is OK and tweak value is YES. Then I switch off internet on my iPhone, open run again and tweak value is NO.

What is correct way to use Mixpanel's tweak without internet?


Solution

  • So, I created my custom manager, where I implemented tweaks' persistency. Please, let me know, if you have better solution.

    My code:

    -(void)initManager {
        [[Mixpanel sharedInstance] joinExperimentsWithCallback:^{
    
            USE_SETTINGS;
    
            SETTINGS_SETBOOL(kPreferredPartnersTweak, MPTweakValue(kPreferredPartnersTweak, NO));
    
            SYNCHRONIZE_SETTINGS;
    
            //===
    
            SEND_NOTIF(kTweaksUpdated, nil);
        }];
    }
    
    -(BOOL)getTweakWithName:(NSString*)tweakName {
    
        BOOL result = NO;
    
        //===
    
        USE_SETTINGS;
    
        if (SETTINGS_BOOL(tweakName)) {
    
            result = SETTINGS_BOOL(tweakName);
        }
        else {
            result = MPTweakValue(kPreferredPartnersTweak, NO);
        }
    
        //===
    
        return result;
    }
    

    USE_SETTINGS, SETTINGS_BOOL, SYNCHRONIZE_SETTINGS is my macros wrappers for working with NSUserDefaults.