Top.Mail.Ru
Подписка на сообщество для Android | VK ID - сервис авторизации
VK ID auth service logo

Подписка на сообщество для Android

Документация актуальна для версии VK ID SDK — 2.5.0.
После того, как вы запросили доступ для работы с сообществами (groups) в настройках приложения, отобразите окно подписки на сообщество в вашем приложении. Окно подписки можно отобразить в любой момент при использовании приложения или для него можно настроить автоматический запуск — в этом случае окно появляется после авторизации пользователя через элемент быстрого входа: кнопку One Tap, шторку авторизации или виджет 3 в 1. Чтобы пользователь мог подписаться на сообщество:
  1. Выберите способ отображения окна подписки и выполните для него необходимые инструкции:
  2. Организуйте работу с подходящим для вас модулем VK ID SDK — Compose или XML. Дальнейшая работа с опцией подписки на сообщество определяется вашим подходом к работе с UI.

Лимиты показа окна подписки на сообщество

Вы можете настроить отображение окна подписки:
  • задать количество показов окна;
  • указать для этого количества показов период в днях;
  • полностью отключить лимиты показа окна.
По умолчанию окно подписки отображается пользователю после авторизации два раза за 30 дней — при этом момент показа может быть любой, он не зафиксирован жёстко. Лимиты позволяют регулировать количество показов за указанный период, чтобы частые показы не мешали пользователю. Задайте необходимые параметры отображения окна подписки при инициализации VK ID SDK. Сделать это можно в методе VKID#init:
VKID.init(
    ...
    groupSubscriptionLimit = GroupSubscriptionLimit(
        maxSubscriptionsToShow = 3, // Количество показов окна подписки.
        periodInDays = 7, // Период для этого количества показов.
    )
)
Параметры groupSubscriptionLimit связаны следующей логикой: если взять в календаре произвольный период в periodInDays дней, то в нём будет не больше maxSubscriptionsToShow показов окна подписки. Чтобы отключить лимиты и показывать окно подписки всегда, передайте groupSubscriptionLimit = null.

Работа с Compose

GroupSubscriptionSheet — конфигурация окна подписки на сообщество. Имеет следующие параметры:
ПараметрОписание
snackbarHostStateОтображение Snackbar о статусе подписки
stateОтображение окна подписки на сообщество
groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
onSuccessCallback-метод, который вызывается при успешной подписке на сообщество
onFailCallback-метод, который вызывается при неуспешной подписке на сообщество
accessTokenProviderИспользование внешнего Access token
styleСтилизация окна подписки на сообщество

Самостоятельный запуск окна подписки на сообщество

Самостоятельный запуск позволяет показать окно подписки на сообщество в любой момент при использовании приложения. Такой запуск используется:
  • если сервис подключил авторизацию через пользовательскую кнопку;
  • если сервис подключил один из элементов быстрого входа и хочет отобразить окно подписки не следующим экраном после авторизации, а в любой другой момент при использовании приложения.
Укажите зависимости Добавьте библиотеку для работы с окном подписки на сообщество в модули, где оно будет использоваться. build.gradle.kts
dependencies {
    implementation("com.vk.id:group-subscription-compose:${sdkVersion— указывается последняя версия SDK, смотрите номер версии в начале страницы}")
}
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar, разместите в вёрстке Composable GroupSubscriptionSnackbarHost: ScreenWithGroupSubscription.kt
@Composable
fun ScreenWithGroupSubscription() {
    val snackbarHostState = SnackbarHostState()
    GroupSubscriptionSnackbarHost(
        snackbarHostState = snackbarHostState,
    )
}
Добавьте окно подписки на сообщество Разместите Composable для окна подписки в вёрстке — так вы сможете добавить его на экран. Также передайте в Composable snackbarHostState, чтобы показать Snackbar о статусе подписки. ScreenWithGroupSubscription.kt
@Composable
fun ScreenWithGroupSubscription() {
    val snackbarHostState = SnackbarHostState()
    GroupSubscriptionSnackbarHost(/* ... */)

    val state = rememberGroupSubscriptionSheetState()
    GroupSubscriptionSheet(
        state = state,
        groupId = "12345",
        onSuccess = { /* Успешная подписка на сообщество */ },
        onFail = { /* Ошибка во время подписки на сообщество */ },
        snackbarHostState = snackbarHostState,
    )
}
Управляйте окном подписки на сообщество
  1. Создайте объект state с помощью метода rememberGroupSubscriptionSheetState().
  2. Передайте его в окно подписки.
Для управления окном подписки на сообщество используйте:
  • state.show() — отображает окно;
  • state.hide() — cкрывает окно.
ScreenWithGroupSubscription.kt
@Composable
fun ScreenWithGroupSubscription() {
    ...
    val state = rememberGroupSubscriptionSheetState()
    ...
    Button(onClick = { state.show() })
}
Настройте доступ к сообществу Для доступа к сообществу передайте в конфигурации элемента быстрого входа scope groups:
OneTap(
    ...
    authParams = VKIDAuthUIParams {
        scopes = setOf("groups")
    }
)
Передача Access token извне По умолчанию для подписки на сообщество используется последний Access token, который был получен после авторизации пользователя. Но вы можете использовать Access token извне — в этом случае вы должны самостоятельно следить за актуальностью токена, поскольку SDK не сможет его обновить. ScreenWithGroupSubscription.kt
@Composable
fun ScreenWithGroupSubscription() {
    ...
    GroupSubscriptionSheet(
        ...
        accessTokenProvider = { MyTokenStorage.getAccessToken() },
    )
}
Стилизация окна подписки на сообщество Для настройки отображения окна подписки на сообщество используйте параметр style. Стилизация окна подписки задаётся с помощью класса GroupSubscriptionStyle. Возможные значения:
КлассОписание
GroupSubscriptionStyleКласс, который определяет стиль окна подписки. Возможные значения:
  • Light() — светлая тема;
  • Dark() — тёмная тема;
  • system() — системная тема, меняется между Light и Dark в зависимости от системных настроек оформления в телефоне.
В параметрах cornersStyle и buttonsCornersStyle задаётся величина скругления окна подписки и кнопок внутри окна соответственно, в dp. Параметр sizeStyle в зависимости от префикса (SMALL/MEDIUM/LARGE) определяет размер текста, а суффикс обозначает высоту кнопок внутри окна подписки в dp. Значение по умолчанию — DEFAULT, которое совпадает с MEDIUM_44.
Другие возможные значения
  • SMALL_32;
  • SMALL_34;
  • SMALL_36;
  • SMALL_38;
  • MEDIUM_40;
  • MEDIUM_42;
  • MEDIUM_46;
  • LARGE_48;
  • LARGE_50;
  • LARGE_52;
  • LARGE_54;
  • LARGE_56.
ScreenWithGroupSubscription.kt
@Composable
fun ScreenWithGroupSubscription() {
    ...
    GroupSubscriptionSheet(
        ...
        style = GroupSubscriptionStyle.Light(
            cornersStyle = GroupSubscriptionSheetCornersStyle.Custom(2f),
            buttonsCornersStyle = GroupSubscriptionButtonsCornersStyle.Default,
            sizeStyle = GroupSubscriptionButtonsSizeStyle.SMALL_32,
        )
    )
}

Окно подписки на сообщество в кнопке One Tap

Вы можете настроить автоматический показ окна подписки на сообщество, которое запускается после авторизации пользователя через кнопку One Tap. Чтобы настроить запуск окна, добавьте в уже имеющуюся конфигурацию OneTap следующие параметры:
ПараметрОписание
GroupSubscriptionSnackbarHostОтображение Snackbar о статусе подписки
subscribeToGroupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
onSuccessSubscribingToGroupCallback-метод, который вызывается при успешной подписке на сообщество
onFailSubscribingToGroupCallback-метод, который вызывается при неуспешной подписке на сообщество
groupSubscriptionStyleСтилизация окна подписки на сообщество
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar, разместите в вёрстке Composable GroupSubscriptionSnackbarHost: ScreenWithOneTap.kt
@Composable
fun ScreenWithOneTap() {
    val snackbarHostState = SnackbarHostState()
    GroupSubscriptionSnackbarHost(
        snackbarHostState = snackbarHostState,
    )
}
Сконфигурируйте кнопку One Tap Чтобы настроить запуск окна подписки на сообщество после авторизации пользователя через кнопку One Tap, добавьте следующие параметры: ScreenWithOneTap.kt
@Composable
fun ScreenWithOneTap() {
    val snackbarHostState = SnackbarHostState()
    ...
    OneTap(
        ...
        subscribeToGroupId = "12345",
        onSuccessSubscribingToGroup = { /* Успешная подписка на сообщество */ },
        onFailSubscribingToGroup = { /* Ошибка во время подписки на сообщество */ },
        groupSubscriptionSnackbarHostState = snackbarHostState,
        groupSubscriptionStyle = GroupSubscriptionStyle.Light(),
    )
}
Стилизация окна подписки на сообщество Для настройки отображения окна подписки на сообщество используйте параметр groupSubscriptionStyle. Стилизация окна подписки задаётся аналогично самостоятельному запуску.

Окно подписки на сообщество в шторке авторизации

Вы можете настроить автоматический показ окна подписки на сообщество, которое запускается после авторизации пользователя через шторку авторизации. Чтобы настроить запуск окна, добавьте в уже имеющуюся конфигурацию OneTapBottomSheet следующие параметры:
ПараметрОписание
GroupSubscriptionSnackbarHostОтображение Snackbar о статусе подписки
subscribeToGroupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
onSuccessSubscribingToGroupCallback-метод, который вызывается при успешной подписке на сообщество
onFailSubscribingToGroupCallback-метод, который вызывается при неуспешной подписке на сообщество
groupSubscriptionStyleСтилизация окна подписки на сообщество
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar, разместите в вёрстке Composable GroupSubscriptionSnackbarHost: ScreenWithBottomSheet.kt
@Composable
fun ScreenWithBottomSheet() {
    val snackbarHostState = SnackbarHostState()
    GroupSubscriptionSnackbarHost(
        snackbarHostState = snackbarHostState,
    )
}
Сконфигурируйте шторку авторизации Чтобы настроить запуск окна подписки на сообщество после авторизации пользователя через шторку авторизации, добавьте следующие параметры: ScreenWithBottomSheet.kt
@Composable
fun ScreenWithBottomSheet() {
    val snackbarHostState = SnackbarHostState()
    ...
    OneTapBottomSheet(
        ...
        subscribeToGroupId = "12345",
        onSuccessSubscribingToGroup = { /* Успешная подписка на сообщество */ },
        onFailSubscribingToGroup = { /* Ошибка во время подписки на сообщество */ },
        groupSubscriptionSnackbarHostState = snackbarHostState,
        groupSubscriptionStyle = GroupSubscriptionStyle.Light(),
    )
}
Стилизация окна подписки на сообщество Для настройки отображения окна подписки на сообщество используйте параметр groupSubscriptionStyle. Стилизация окна подписки задаётся аналогично самостоятельному запуску.

Окно подписки на сообщество в виджете 3 в 1

Вы можете настроить автоматический показ окна подписки на сообщество, которое запускается после авторизации пользователя через виджет 3 в 1. Чтобы настроить запуск окна, добавьте в уже имеющуюся конфигурацию OAuthListWidget следующие параметры:
ПараметрОписание
GroupSubscriptionSnackbarHostОтображение Snackbar о статусе подписки
subscribeToGroupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
onSuccessSubscribingToGroupCallback-метод, который вызывается при успешной подписке на сообщество
onFailSubscribingToGroupCallback-метод, который вызывается при неуспешной подписке на сообщество
groupSubscriptionStyleСтилизация окна подписки на сообщество
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar, разместите в вёрстке Composable GroupSubscriptionSnackbarHost: ScreenWithOAuthListWidget.kt
@Composable
fun ScreenWithBottomSheet() {
    val snackbarHostState = SnackbarHostState()
    GroupSubscriptionSnackbarHost(
        snackbarHostState = snackbarHostState,
    )
}
Сконфигурируйте виджет 3 в 1 Чтобы настроить запуск окна подписки на сообщество после авторизации пользователя через шторку авторизации, добавьте следующие параметры: ScreenWithOAuthListWidget.kt
@Composable
fun ScreenWithBottomSheet() {
    val snackbarHostState = SnackbarHostState()
    ...
    OAuthListWidget(
        ...
        subscribeToGroupId = "12345",
        onSuccessSubscribingToGroup = { /* Успешная подписка на сообщество */ },
        onFailSubscribingToGroup = { /* Ошибка во время подписки на сообщество */ },
        groupSubscriptionSnackbarHostState = snackbarHostState,
        groupSubscriptionStyle = GroupSubscriptionStyle.Light(),
    )
}
Стилизация окна подписки на сообщество Для настройки отображения окна подписки на сообщество используйте параметр groupSubscriptionStyle. Стилизация окна подписки задаётся аналогично самостоятельному запуску.

Работа с XML

GroupSubscriptionSheet —— конфигурация окна подписки на сообщество. Имеет следующие атрибуты:
АтрибутОписание
vkid_groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
vkid_groupSubscriptionStyleСтилизация окна подписки на сообщество
Также конфигурация GroupSubscriptionSheet имеет следующие property:
propertyОписание
snackbarHostОтображение Snackbar о статусе подписки
groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
accessTokenProviderИспользование внешнего Access token.
styleСтилизация окна подписки на сообщество
Ещё в GroupSubscriptionSheet есть методы:
МетодОписание
show()Отображает окно подписки
hide()Скрывает окно подписки
setCallbacks()Callback-метод, который вызывается в зависимости от переданных параметров:
  • onSuccess — при успешной подписке на сообщество;
  • onFail — при неуспешной подписке на сообщество.

Самостоятельный запуск окна подписки на сообщество

Самостоятельный запуск позволяет показать окно подписки на сообщество в любой момент при использовании приложения. Такой запуск используется:
  • если сервис подключил авторизацию через пользовательскую кнопку;
  • если сервис подключил один из элементов быстрого входа и хочет отобразить окно подписки не следующим экраном после авторизации, а в любой другой момент при использовании приложения.
Укажите зависимости Добавьте библиотеку для работы с окном подписки на сообщество в модули, где оно будет использоваться. build.gradle.kts
dependencies {
    implementation("com.vk.id:group-subscription-xml:${sdkVersion— указывается последняя версия SDK, смотрите номер версии в начале страницы}")
}
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar:
  1. Разместите в вёрстке объект GroupSubscriptionSnackbarHost:
    <com.vk.id.group.subscription.xml.GroupSubscriptionSnackbarHost
            android:id="@+id/group_subscription_snackbar_host"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
  2. Укажите на объект ссылку через property snackbarHost:
    findViewById<GroupSubscriptionSheet>(R.id.group_subscription).snackbarHost
        = findViewById<GroupSubscriptionSnackbarHost>(R.id.group_subscription_snackbar_host)
Добавьте окно подписки на сообщество Чтобы отобразить окно подписки:
  1. Разместите в вёрстке объект GroupSubscriptionSheet:
    <com.vk.id.group.subscription.xml.GroupSubscriptionSheet
            android:id="@+id/group_subscription"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:vkid_groupId="1" />
  2. Настройте параметры объекта:
    findViewById<GroupSubscriptionSheet>(R.id.group_subscription).apply {
        setCallbacks(
            onSuccess = { /* Успешная подписка на сообщество */ },
            onFail = { /* Ошибка во время подписки на сообщество */ },
        )
        groupId = "12345"
    }
Управляйте окном подписки на сообщество Управлять отображением окна подписки на сообщество с помощью следующих методов:
  • show() — отображает окно;
  • hide() — скрывает окно.
ScreenWithGroupSubscription.kt
findViewById<GroupSubscriptionSheet>(R.id.group_subscription).show()
Настройте доступ к сообществу Для доступа к сообществу передайте в конфигурации элемента быстрого входа scope groups:
val view = findViewById<OneTap>(R.id.onetap)
view.scopes = setOf("groups")
Также можно передать scope groups в вёрстке:
<com.vk.id.onetap.xml.OneTap
    ...
    app:vkid_onetapScopes="groups"
/>
Передача Access token извне Самостоятельный запуск позволяет показать окно подписки на сообщество в любой момент при использовании приложения. Такой запуск используется:
  • если сервис подключил авторизацию через пользовательскую кнопку;
  • если сервис подключил один из элементов быстрого входа и хочет отобразить окно подписки не следующим экраном после авторизации, а в любой другой момент при использовании приложения.
ScreenWithGroupSubscription.kt
findViewById<GroupSubscriptionSheet>(R.id.group_subscription).accessTokenProvider = { MyTokenStorage.getAccessToken() }
Стилизация окна подписки на сообщество Настроить отображение окна подписки на сообщество можно программно или через XML. Программно стиль настраивается аналогично Compose. ScreenWithGroupSubscription.kt
fun onCreate(/* ... */) {
    findViewById<GroupSubscriptionSheet>(R.id.group_subscription).style = GroupSubscriptionStyle.Light(
        cornersStyle = GroupSubscriptionSheetCornersStyle.Custom(2f),
        buttonsCornersStyle = GroupSubscriptionButtonsCornersStyle.Default,
        sizeStyle = GroupSubscriptionButtonsSizeStyle.SMALL_32,
    )
}
Также параметры окна подписки на сообщество можно указывать в XML. Чтобы задать стиль окна подписки, используйте параметр vkid_groupSubscriptionStyle с одним из возможных значений:
Значениеписание
lightСветлая тема
darkТёмная тема
systemСистемная тема, меняется между light и dark в зависимости от системных настроек оформления в телефоне
В параметре vkid_groupSubscriptionCorners задаётся величина скругления окна подписки в dp. В параметре vkid_groupSubscriptionButtonCorners задаётся величина скругления углов кнопок в dp. Параметр vkid_groupSubscriptionButtonSize в зависимости от префикса (small/medium/large) определяет размер текста на кнопках, а суффикс обозначает высоту кнопок в DP. Значение по умолчанию — standard, которое совпадает с medium44.
Другие возможные значения
  • standard;
  • small32;
  • small34;
  • small36;
  • small38;
  • medium40;
  • medium42;
  • medium46;
  • large48;
  • large50;
  • large52;
  • large54;
  • large56.
Пример настройки стиля через XML см. ниже. ScreenWithGroupSubscription.xml
<com.vk.id.group.subscription.xml.GroupSubscriptionSnackbarHost
        android:id="@+id/group_subscription_snackbar_host"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:vkid_groupSubscriptionButtonCorners="0dp"
        app:vkid_groupSubscriptionButtonSize="small32"
        app:vkid_groupSubscriptionCorners="1dp"
        app:vkid_groupSubscriptionStyle="system" />

Окно подписки на сообщество в кнопке One Tap

Вы можете настроить автоматический показ окна подписки на сообщество, которое запускается после авторизации пользователя через кнопку One Tap. Для этого в конфигурации OneTap используются атрибуты:
АтрибутОписание
vkid_groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
vkid_groupSubscriptionStyleСтилизация окна подписки на сообщество
Также для показа окна подписки в OneTap есть property:
propertyОписание
snackbarHostОтображение Snackbar о статусе подписки
groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
styleСтилизация окна подписки на сообщество
Ещё в OneTap есть Callback-метод setGroupSubscriptionCallbacks(), который вызывается в зависимости от переданных параметров:
  • onSuccess — при успешной подписке на сообщество;
  • onFail — при неуспешной подписке на сообщество.
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar:
  1. Разместите в вёрстке объект GroupSubscriptionSnackbarHost:
    <com.vk.id.group.subscription.xml.GroupSubscriptionSnackbarHost
            android:id="@+id/group_subscription_snackbar_host"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
  2. Укажите на объект ссылку через property snackbarHost:
    findViewById<OneTap>(R.id.one_tap).snackbarHost
        = findViewById<GroupSubscriptionSnackbarHost>(R.id.group_subscription_snackbar_host)
Добавьте окно подписки на сообщество Чтобы отобразить окно подписки:
  1. Разместите в вёрстке объект OneTap:
    <com.vk.id.onetap.xml.OneTap
            android:id="@+id/one_tap"
            app:vkid_groupId="12345" />
  2. Настройте параметры объекта:
    findViewById<OneTap>(R.id.one_tap).apply {
        setGroupSubscriptionCallbacks(
            onSuccess = { /* Успешная подписка на сообщество */ },
            onFail = { /* Ошибка во время подписки на сообщество */ },
        )
        groupId = "12345"
    }
Стилизация окна подписки на сообщество Для настройки отображения окна подписки на сообщество используйте параметр groupSubscriptionStyle. Стилизация окна подписки задаётся аналогично самостоятельному запуску.

Окно подписки на сообщество в шторке авторизации

Вы можете настроить автоматический показ окна подписки на сообщество, которое запускается после авторизации пользователя через шторку авторизации. Для этого в конфигурации OneTapBottomSheet используются атрибуты:
АтрибутОписание
vkid_groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
vkid_groupSubscriptionStyleСтилизация окна подписки на сообщество
Также для показа окна подписки в OneTapBottomSheet есть property:
propertyОписание
snackbarHostОтображение Snackbar о статусе подписки
groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
styleСтилизация окна подписки на сообщество
Ещё в OneTapBottomSheet есть Callback-метод setGroupSubscriptionCallbacks(), который вызывается в зависимости от переданных параметров:
  • onSuccess — при успешной подписке на сообщество;
  • onFail — при неуспешной подписке на сообщество.
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar:
  1. Разместите в вёрстке объект GroupSubscriptionSnackbarHost:
    <com.vk.id.group.subscription.xml.GroupSubscriptionSnackbarHost
            android:id="@+id/group_subscription_snackbar_host"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
  2. Укажите на объект ссылку через функцию snackbarHost:
    findViewById<OneTapBottomSheet>(R.id.one_tap).snackbarHost
        = findViewById<GroupSubscriptionSnackbarHost>(R.id.group_subscription_snackbar_host)
Добавьте окно подписки на сообщество Чтобы отобразить окно подписки:
  1. Разместите в вёрстке объект OneTapBottomSheet:
    <com.vk.id.onetap.xml.OneTapBottomSheet
            android:id="@+id/one_tap_bottom_sheet"
            app:vkid_groupId="12345" />
  2. Настройте параметры объекта:
    findViewById<OneTapBottomSheet>(R.id.one_tap_bottom_sheet).apply {
        setGroupSubscriptionCallbacks(
            onSuccess = { /* Успешная подписка на сообщество */ },
            onFail = { /* Ошибка во время подписки на сообщество */ },
        )
        groupId = "12345"
    }
Стилизация окна подписки на сообщество Для настройки отображения окна подписки на сообщество используйте параметр groupSubscriptionStyle. Стилизация окна подписки задаётся аналогично самостоятельному запуску.

Окно подписки на сообщество в виджете 3 в 1

Вы можете настроить автоматический показ окна подписки на сообщество, которое запускается после авторизации пользователя через виджет 3 в 1. Для этого в конфигурации OAuthListWidget используются атрибуты:
АтрибутОписание
vkid_groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
vkid_groupSubscriptionStyleСтилизация окна подписки на сообщество
Также для показа окна подписки в OAuthListWidget есть property:
propertyОписание
snackbarHostОтображение Snackbar о статусе подписки
groupIdID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
styleСтилизация окна подписки на сообщество
Ещё в OAuthListWidget есть Callback-метод setGroupSubscriptionCallbacks(), который вызывается в зависимости от переданных параметров:
  • onSuccess — при успешной подписке на сообщество;
  • onFail — при неуспешной подписке на сообщество.
Добавьте Snackbar о статусе подписки После подписки на сообщество показывается Snackbar о статусе подписки: успех или ошибка. Чтобы отобразить Snackbar:
  1. Разместите в вёрстке объект GroupSubscriptionSnackbarHost:
    <com.vk.id.group.subscription.xml.GroupSubscriptionSnackbarHost
            android:id="@+id/group_subscription_snackbar_host"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
  2. Укажите на объект ссылку через функцию snackbarHost:
    findViewById<OAuthListWidget>(R.id.oauth_list_widget).snackbarHost
        = findViewById<GroupSubscriptionSnackbarHost>(R.id.group_subscription_snackbar_host)
Добавьте окно подписки на сообщество Чтобы отобразить окно подписки:
  1. Разместите в вёрстке объект OAuthListWidget:
    <com.vk.id.onetap.xml.OAuthListWidget
            android:id="@+id/no_multibranding_one_tap"
            app:vkid_groupId="12345" />
  2. Настройте параметры объекта:
    findViewById<OAuthListWidget>(R.id.oauth_list_widget).apply {
        setGroupSubscriptionCallbacks(
            onSuccess = { /* Успешная подписка на сообщество */ },
            onFail = { /* Ошибка во время подписки на сообщество */ },
        )
        groupId = "12345"
    }
Стилизация окна подписки на сообщество Для настройки отображения окна подписки на сообщество используйте параметр groupSubscriptionStyle. Стилизация окна подписки задаётся аналогично самостоятельному запуску.

Ошибки

Возможные ошибки из sealed class VKIDGroupSubscriptionFail
  • AlreadyGroupMember — пользователь уже подписан на сообщество;
  • Cancel — пользователь отменил подписку на сообщество;
  • Close — пользователь закрыл окно подписки на сообщество;
  • Dismiss — пользователь свернул окно подписки на сообщество;
  • ServiceAccount — пользователь авторизовался с помощью аккаунта VK ID, который не прошёл процедуру дорегистрации. Это значит, что пользователь не создал учётную запись в социальной сети ВКонтакте;
  • ClientLimitReached — достигнут лимит показов окна подписок на сообщество, заданный в groupSubscriptionLimit;
  • RemoteLimitReached — достигнут лимит успешных подписок на сообщество, который указан в договоре;
  • Other — при выполнении запроса произошла неизвестная ошибка.