1
votes

It seems that all examples from Firebase suggest reloading the Remote Config in didFinishLaunching. It looks like a great idea, BUT I see an issue with it. When I run this setup in the simulator, the first fetch arrives with the default values set in the console. Seems reasonable, but the problem is that I have a running A/B testing experiment — actually, several of them. And I do see that on the second launch, I receive new values coming from those experiments.

The experiments target all users of my app, and it worries me that from the first launch, I do not receive those values. In a real-world, Firebase will cache the obtained values for 12 hours. However, as the docs do not mention when a user is counted towards a particular variant in my experiment, I worry that for these 12 hours some of my users will be attributed to non-default modification even though their app does not know that they should receive a non-default experience.

Another issue which I have is the fact that for Remote Config fetch to execute in didFinishLaunching, the app needs to be terminated. What if my users use it regularly and the system doesn't kill it? It means that they may never receive updated config values.

My question boils down to these:

  1. Isn't it better to reload the Remote Config in didBecomeActive?
  2. When does Firebase attribute a user to a particular variant in my A/B test? Does it happen silently at some point in app lifecycle, or do they make sure that it only happens when my user received corresponding Remote Config values? It may be a silly question as it SHOULD be obvious that a user should only be counted if they received new values, but the docs do not mention this.
  3. Is there a way to reload Remote Config and be confident that I receive the latest values, taking all ongoing A/B testing experiments into account? Imagine if I want to run a test to determine the ideal price point for my in-app purchase. I would want to reload the Remote Config and load all the latest values before I fetch my in-app products. I wouldn't want to receive default values on the first launch, present my store screen with low price level to user, only to load a more expensive version on the second launch when new values arrive from Remote Config.
1

1 Answers

0
votes

It alls comes down to the criteria of your A/B test. A user will not be able to receive A/B variants UNTIL it satisfies all the test requirements. You can refetch these values at a point in your app that you know the user will have satisfied these requirements.

You can use the DebugView to see whether a specific A/B test has been activate for a user.