Методы Android SDK
Методы для инициализации
Примеры вызова методов можно найти тут
init
Метод инициализации SDK
Вызывается в методе onCreate в классе наследнике от Application
Code
Возможные варианты:
- Без мобильных пушей: Mindbox.init(applicationContext, configuration, listOf())
- Только Firebase: Mindbox.init(applicationContext, configuration, listOf(MindboxFirebase))
- Только Huawei: Mindbox.init(applicationContext, configuration, listOf(MindboxHuawei))
- Только RuStore: Mindbox.init(applicationContext, configuration, listOf(MindboxRuStore))
- Все сервисы. Первый в списке считается приоритетным, если на телефоне пользователя доступны все сервисы: Mindbox.init(applicationContext, configuration, listOf(MindboxFirebase, MindboxHuawei, MindboxRuStore))
initPushServices
Метод для инициализации push-сервисов
Вы должны вызвать этот метод в onCreate вашего класса Application, если вы вызываете метод init в Activity
Code
updatePushToken
Метод для передачи в SDK токена FMS/HMS/RuStore.
Вызывается в методе onNewToken класса наследника MessagingService
Code
Получение данных от SDK
subscribeDeviceUuid и disposeDeviceUuidSubscription
subscribeDeviceUuid
Метод получение deviceUUID. Работает через подписку, чтобы избежать проблем в случае вызова до инициализации Mindbox SDK.
Значение вернется строкой в переданном колбеке.
Вызов метода возвращает идентификатор, который можно использовать для отписки от колбека
Code
disposeDeviceUuidSubscription
Метод очистки подписки на получение deviceUUID. Принимает идентификатор, который вернул метод подписки
subscribePushTokens и disposePushTokenSubscription
subscribePushTokens
Метод получения токенов Firebase, HMS, RuStore
Работает через подписку, чтобы избежать проблем в случае вызова до инициализации Mindbox SDK.
Значение вернется в переданный колбек строкой json вида {"FCM":"token1","HMS":"token2","RuStore":"token3"}
Вызов метода возвращает идентификатор, который можно использовать для отписки от колбека.
Code
disposePushTokenSubscription
Метод очистки подписки на получение FMS/HMS/RuStore токенов. Принимает идентификатор, который вернул метод подписки
getPushTokensSaveDate
Возвращает даты сохранения токенов FMS/HMS/RuStore формате пак ключ-значение (проваейдер-timestamp)
Code
getSdkVersion
Возвращает версию SDK
Code
Передача статистики по пушу
onPushReceived
Метод для передачи статуса “Пуш получен”.
Используется в коде обработки пуша
Не используйте этот метод, если вы пользуетесь handleRemoteMessage
Code
onPushClicked
Метод передачи клика по пушу.
uniq_push_key - обязательный - идентификатор пуша
uniq_push_button_key - опционально - идентификатор кнопки, передается, если кликнули по кнопке
Code
setLogLevel
Для управления тем, что будет писать в консоль Mindbox SDK, есть специальный метод установки уровня логирования: setLoglevel
Варианты значения:
Level.NONE
Level.VERBOSE
Level.INFO
Level.DEBUG
Level.WARN
Level.ERROR
Логи пишутся только в debug сборке. В продакшн режиме Mindbox SDK ничего не пишет в консоль.
Code
Передача событий
Передача событий в Mindbox происходит через выполнение операций, заведенных в административном разделе. Операции можно выполнять в 2 режимах:
- асинхронно - API Mindbox отвечает 200 сразу, как получил данные. Обработка данных происходит в фоновом режиме
- синхронно - API Mindbox начинает обрабатывать запрос в момент получения и отвечает актуальным статусом обработки
executeAsyncOperation
Метод выполнения операции в асинхронном режиме.
Code
executeSyncOperation
Метод для выполнения операции в синхронном режиме. Данные возвращаются в переданные колбеки
Code
Получение данных кликнутого пуша
При обработке клика на пуш, который отрисован методом handleRemoteMessage вы можете получить данные, которые были в этом пуше
getUrlFromPushIntent
Метод для получения ссылки кликнутого пуша.
Возвращает ссылку, которую настроили в административном разделе. Если пользователь нажал на тело пуша - вернется ссылка с тела, если на кнопку - ссылка этой кнопки
Code
getPayloadFromPushIntent
Метод для получения payload кликнутого пуша.
Возвращает данные, которые были указаны в качестве payload пуша в административном разделе.
Данные возвращаются строкой. Если был указан JSON, то его нужно самостоятельно сериализовать
Code
setMessageHandling (since 2.6.1)
В методе реализованы различные стратегии обработки ошибок при загрузке изображений уведомлений. Также предоставлена возможность реализовать собственную стратегию загрузки изображений.
По умолчанию используется стратегия applyDefaultStrategy (при возникновении ошибки будет показан push без изображения) и дефолтный способ загрузки изображения
Code
Возможные стратегии обработки ошибок при загрузке картинок:
Мы предоставляем 5 решений:
- cancellationStrategy: Используйте
MindboxImageFailureHandler.cancellationStrategy()
Если произошла ошибка загрузки картинки, то пуш не будет показан - applyDefaultStrategy: Используйте
MindboxImageFailureHandler.applyDefaultStrategy(defaultImage)
При возникновении ошибки загрузки картинки используется изображение по умолчанию, указанное в конструкторе (если значениеdefaultImageравно null, то пуш будет показан без изображения) - retryOrDefaultStrategy: Используйте
MindboxImageFailureHandler.retryOrDefaultStrategy(maxAttempts, delay, defaultImage)
Если произошла ошибка загрузки картинки, произойдут попытки повторить загрузку изображения максимальное количество раз с интервалом задержки. Если изображение в итоге не получится загрузить, то отобразится push с изображением по умолчанию (или без изображения, еслиdefaultImageравно null) - applyDefaultAndRetryStrategy: Используйте
MindboxImageFailureHandler.applyDefaultAndRetryStrategy(maxAttempts, delay, defaultImage)
Если произошла ошибка загрузки картинки, отобразится пуш сdefaultImage(или без изображения, еслиdefaultImageравен null) и произойдет попытка повторить загрузку изображения максимальное количество раз с интервалом задержки. Требуется minSdkLevel = M (23) - retryOrCancelStrategy: Используйте
MindboxImageFailureHandler.retryOrCancelStrategy(maxAttempts, delay).
Если произошла ошибка загрузки картинки, произойдет попытка повторить загрузку изображения максимальное количество раз с интервалом задержки. Если изображение не загрузится, то пуш не будет показан пользователю
Для использования этих стретегий необходимо в Application.onCreate() (или в вашей Activity) вызвать методMindbox.setMessageHandling(imageFailureHandler = strategy)
Code
Вы можете реализовать свои собственные стратегии, реализовав MindboxImageFailureHandler и переопределив метод onImageLoadingFailed
Code
message: RemoteMessage модель отображаемого уведомления,
state: MessageHandlingState содержит количество попыток показа данного push и флаг isMessageDisplayed, показывающий, был ли показан пуш.
Возвращаемое значение - ImageRetryStrategy, которое является одним из следующих:
ImageRetryStrategy.Cancel: остановить процесс и не показывать пушImageRetryStrategy.ApplyDefault(defaultImage): остановить процесс загрузки и показать пуш с изображением по умолчаниюImageRetryStrategy.Retry(delay): повторить загрузку изображения через интервал задержкиImageRetryStrategy.ApplyDefaultAndRetry(delay, defaultImage): показать push с изображением по умолчанию (или без него, если defaultImage равно null)
Примеры можно посмотреть в исходном коде sdk
Cпособы загрузки изображения
Мы предоставляем одно решение по умолчанию, которое делает прямой запрос на получение изображения. Для его получения используйте MindboxImageLoader.default().
Для его использования необходимо в Application.onCreate() (или в вашей Активити) вызвать Mindbox.setMessageHandling(imageLoader = loader)
Code
Вы можете реализовать собственную стратегию загрузки изображений, реализовав интерфейс MindboxImageLoader и переопределив его метод onLoadImage
Code
message: RemoteMessage модель отображаемого уведомления,
state: MessageHandlingState содержит количество попыток показа этого push и флаг isMessageDisplayed, показывающий, был ли показан push.
Необходимо загрузить изображение и вернуть его в результате работы данного метода
updateNotificationPermissionStatus (since 2.8.1)
Метод для передачи информации о смене статуса разрешения на уведомления
Code
handleRemoteMessage
Метод для отрисовки push-уведомления
Если используете этот метод, не вызывайте onPushReceived()
Code
isMindboxPush
Метод для проверки принадлежит ли push Mindbox
Code
convertToMindboxRemoteMessage
Метод для конвертации модели уведомления провайдера в модель уведомления Mindbox
Code
Изменение цвета иконки pushSmallIcon (since 2.10.0)
Чтобы поменять цвет монохромной иконки, в уведомлении задайте цвет в ресурсе mindbox_default_notification_color в файле res/values/colors.xml. Изменение цвета может не работать на некоторых версиях Android в зависимости от изготовителя устройства.
Code
Включение отображения In-App на DialogFragment (since 2.13.5)
Чтобы включить возможность отрображения In-App поверх DialogFragment, добавьте булевый ресурс mindbox_support_inapp_on_fragment со значением true в файле res/values/bools.xml
Code
Классы Android SDK
Mindbox
Синглтон, содержащий все публичные методы Mindbox SDK
MindboxFirebase
Синглтон, отвественный за использование провайдера push-уведомлений Firebase.
Может быть использован при инициализации в application в методе Mindbox.init() или в методе initPushServices, при инициализации в activity
MindboxHuawei
Синглтон, отвественный за использование провайдера push-уведомлений Huawei.
Может быть использован при инициализации в application в методе Mindbox.init() или в методе initPushServices, при инициализации в activity
MindboxRuStore
Синглтон, отвественный за использование провайдера push-уведомлений RuStore.
Может быть использован при инициализации в application в методе Mindbox.init() или в методе initPushServices, при инициализации в activity
Можно передать projectId RuStore, для инициализации через метод MindboxRuStore(RUSTORE_PROJECT_ID)
MindboxError
Класс, отвечающий за ошибку, произошедшую в sdk.
Может быть получена при отправке синхронной операции
InitializeMindboxException
Класс, отвечающий за ошибку при инициализации SDK. Такая ошибка будет выброшена ошибке в инициализациию
PushAction
Класс, отвечающий за хранение информации о кнопке в push-уведомлении. Может быть использован в качестве модели, если вы используете собственную реализацию отрисовки уведомлений.
RemoteMessage
Класс, отвечающий за хранение информации о push-уведомлении. Может быть использован в качестве модели, если вы используете собственную реализацию отрисовки уведомлений.