A/B тестирование
A/B-тестирование в Firebase: часть 2
Продолжаем изучать Remote Config и A/B-тестирование в Firebase и учимся делать ваших пользователей самыми счастливыми!
Расширенный пользовательский таргетинг
Давайте изменим механизмы, чтобы понять, что еще мы можем сделать с Firebase Remote Config вне A/B-теста.
В предыдущем уроке вы избежали международного кризиса, установив shouldWeIncludePluto в true для ваших пользователей в Скандинавии. Оказывается, однако, что такой настройки на основе страны недостаточны. Выбор того, планета ли Плутон, является глубоко личным, и многие люди со всего мира хорошо относятся к планетному статусу Плутона. Как мы можем настроить Planet Tour для всех?
Ну, вместо того, чтобы просто изменять это значение по странам, вы можете добавить гораздо более точный контроль, изменив этот параметр на основе свойства пользователя.
Свойства пользователя в Google Analytics
Свойство пользователя в Google Analytics для Firebase – это просто свойство, связанное с конкретным пользователем.
Некоторые примеры пользовательских свойств – премиум-пользователи в вашем приложении, пользовательские цели в вашем приложении по фитнесу или любые другие связанные с пользователем данные, которые вы можете захотеть отфильтровать.
В вашем случае вы будете использовать свойство likeSmallRocks, чтобы понять то, как пользователь относится к небольшим, холодным скалам на окраинах нашей солнечной системы. Затем вы будете использовать это свойство в сочетании с Remote Config, чтобы предоставить пользователям новый опыт на основе этого значения.
Хотя существуют разные способы определить, является ли пользователь поклонником маленьких отдаленных скальных пород, проще всего просто спросить их.
В верхней части PlanetsCollectionViewController.swift добавьте эту строку:
import Firebase
Затем добавьте следующее определение reuseIdentifier:
private let takenSurveyKey = "takenSurvey"
Наконец, добавьте следующее внутри расширения с помощью MARK: — Internal, прямо над функцией addFancyBackground ().
@objc func runUserSurvey() {
let alertController = UIAlertController(title: "User survey",
message: "How do you feel about small, remote, cold rocks in space?",
preferredStyle: .actionSheet)
let fanOfPluto = UIAlertAction(title: "They're planets, too!", style: .default) { _ in
Analytics.setUserProperty("true", forName: "likesSmallRocks")
}
let notAFan = UIAlertAction(title: "Not worth my time", style: .default) { _ in
Analytics.setUserProperty("false", forName: "likesSmallRocks")
}
alertController.addAction(fanOfPluto)
alertController.addAction(notAFan)
navigationController?.present(alertController, animated: true)
UserDefaults.standard.set(true, forKey: takenSurveyKey)
}
Нужно отметить две вещи в опросе, который вы добавили — во-первых, после того, как вы получите ответ от пользователя, вы записываете его в новое свойство пользователя likesSmallRocks. Во-вторых, вы делаете заметку в UserDefaults этого пользователя, который уже принял участие в опросе, чтобы его не спрашивать каждый раз при посещении приложения.
Теперь, когда вы определили свое свойство пользователя в коде, вам необходимо выполнить второй шаг, который позволяет консоли Firebase знать, что это свойство существует, чтобы оно могло начать создавать отчеты на его основе. Лучше всего добавлять user property в консоль Firebase одновременно с добавлением ее в код. Откройте консоль Firebase и выберите «Google Analytics», затем «User Properties» .
Теперь будьте осторожны в следующем шаге – консоль Firebase не позволяет редактировать или удалять свойства пользователя после их создания! Выберите NEW USER PROPERTY и создайте новую запись, которая называется likeSmallRocks. Я рекомендую копировать и вставлять имя, чтобы убедиться, что оно точно соответствует. Дайте ему любое описание, которое вы хотели бы. Затем нажмите CREATE.
Вернитесь в PlanetsCollectionViewController.swift и в конце viewDidAppear(_:) и добавьте эти строки, чтобы убедиться, что вы запрашиваете это только один раз при установке приложения:
if !UserDefaults.standard.bool(forKey: takenSurveyKey) {
runUserSurvey()
}
Если вы хотите немного упростить тестирование, добавьте этот код viewWillAppear(_:) выше customizeNavigationBar(), который добавит кнопку на панель навигации, чтобы запустить опрос в любое время, минуя проверку того, что вы уже видели это:
let retakeSurveyButton = UIBarButtonItem(barButtonSystemItem: .compose,
target: self,
action: #selector(runUserSurvey))
parent?.navigationItem.rightBarButtonItem = retakeSurveyButton
Создайте и запустите приложение. Теперь вас спросят, как вы относитесь к маленьким скалам в космосе. Не стесняйтесь и честно ответьте.
Настройка вашего приложения
Теперь вы можете начать настройку Remote Config на основе этого значения. Откройте консоль Firebase и выберите Remote Config. Если вы закончили предыдущий туториал, вы увидите свою запись для shouldWeIncludePluto. И если вы этого не сделали, создайте ее заново.
Если вам нужно создать, сначала нажмите «ADD YOUR FIRST PARAMETER». Затем введите значение параметра shouldWeIncludePluto для Parameter key и сохраните значение по умолчанию пустым (Default value). Затем нажмите ADD PARAMETER.
Нажмите значок карандаша рядом с надписью shouldWeIncludePluto, чтобы изменить его, затем выберите Add value for condition > Define new condition. Назовите новое условие «Small rock fans» и укажите это условие, если User property > likesSmallRocks | exactly matches | true.
Примечание. Не выбирайте оператор сравнения == в этом диалоговом окне — это используется только для чисел.
Нажмите CREATE CONDITION, затем установите для этого значения значение true и значение по умолчанию — false .
Примечание. Если вы не выполнили предыдущий туториал, то здесь не будет состояния «Pluto fans». Ничего страшного!
Нажмите UPDATE, затем PUBLISH CHANGES.
Теперь создайте и запустите приложение снова.
Если вы указали, что являетесь фанатом маленьких отдаленных планет, то теперь вы должны увидеть Плутон среди списка планет. Если вы этого не сделали, вы не увидите Плутон… если ваше устройство не думает, что оно находится в скандинавской стране, и в этом случае Плутон все еще там (при условии, что вы прошли предыдущий туториал и установили это условие).
Если вы хотите посмотреть, как выглядит ваше приложение для людей, которые ответили на опрос по другом, нажмите кнопку вверху, чтобы перепройти опрос, а затем закройте и запустите приложение заново.
Как насчет внесения некоторых более тонких изменений в призыв к действию для ваших поклонников Плутона? В вашем приложении есть переменная planetImageScaleFactor, которая определяет, насколько близко размер изображений планеты соответствует фактическому размеру соответствующей планеты.
При значении 1.0 они соответствуют масштабу, поэтому планеты, подобные Плутону, едва ли с пиксель велиичной. При значении 0.0, все планеты имеют одинаковый размер. Прямо сейчас эта переменная имеет значение по умолчанию 0.33, которое дает вам представление об относительных размерах планет, в то же время делая их легкими для обнаружения.
Нужно немного уменьшить это значение для поклонников небольших планет, чтобы более мелкие планеты, такие как Плутон и Меркурий, стали больше.
Вернитесь в Remote Config в консоли Firebase и создайте новую запись для planetImageScaleFactor. Дайте ему значение 0,2 для пользователей в состоянии «Small rock fans» и значение по умолчанию 0,45. Нажмите UPDATE, затем PUBLISH CHANGES.
Снова запустите Planet Tour. В зависимости от того, как вы относитесь к маленьким скалам, планеты, такие как Марс или Плутон, должны выглядеть пропорционально больше или меньше.
Хотя это может показаться забавным и несущественным изменением, такие типы настроек могут быть весьма полезными. Когда вы узнаете больше о своих пользователях и разных частях своего приложения, которые они предпочитают, вы можете начать предоставлять пользователям по-настоящему индивидуальный опыт, сделав так, чтобы элементы, которые им нравятся, были всегда впереди и в центре.
И вы можете выполнить некоторые A/B-тесты с этими параметрами, чтобы узнать, что делает пользователей вашего приложения самыми счастливыми!