https://id.vk.ru/authorize?response_type=code&client_id=12345&scope=groups
import VKID
do {
let vkid = try VKID(
config: Configuration(
appCredentials: AppCredentials(
clientId: clientId, // ID вашего приложения.
clientSecret: clientSecret // Ваш защищённый ключ (client_secret).
),
groupSubscriptionsLimit: GroupSubscriptionsLimit(
maxSubscriptionsToShow: 2, // Количество показов окна подписки.
periodInDays: 30 // Период для этого количества показов.
)
)
)
} catch {
preconditionFailure("Failed to initialize VKID: \(error)")
}
Параметр | Обязательный | Описание |
---|---|---|
subscribeToGroupId | Да | ID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация |
buttonType | Нет | Стилизация кнопки внутри окна подписки. Возможные значения:
|
theme | Нет | Тема окна подписки на сообщество. Возможные значения:
|
sheetCornerRadius | Нет | Радиус скругления окна подписки на сообщество |
onCompleteSubscription | Нет | Callback, который возвращает результат подписки на сообщество |
let authConfiguration: AuthConfiguration = .init(
groupSubscriptionConfiguration: .init(
subscribeToGroupId: "1", // Замените "1" на ID вашего сообщества.
onCompleteSubscription: { result in
switch result {
case .success:
print("Успешная подписка")
case .failure(let error):
print("Не удалось подписаться: \(error)")
}
},
buttonType: .custom(.init(height: .medium(.h44), cornerRadius: 12)),
sheetCornerRadius: 24
)
)
let oneTapConfig = OneTapButton(authConfiguration: authConfiguration, onCompleteAuth: nil)
let oneTap = self.vkid?.ui(for: oneTapConfig).uiView()
Параметр | Обязательный | Описание |
---|---|---|
subscribeToGroupId | Да | ID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация |
buttonConfiguration | Нет | Стилизация кнопок внутри окна подписки на сообщество |
theme | Нет | Тема окна подписки на сообщество. Возможные значения:
|
sheetCornerRadius | Нет | Радиус скругления окна подписки на сообщество |
presenter | Нет | Presenter для отображения Snackbar |
onCompleteSubscription | Нет | Callback, который возвращает результат подписки на сообщество |
accessTokenProvider | Да | Callback, который возвращает результат передачи Access token |
Параметры | Обязательный | Описание |
---|---|---|
needToRefresh | Да | Признак необходимости обновить токен. Если возвращается значение true, обновите токен |
completion | Да | Callback для передачи accessToken или ошибки |
let sheetConfig = GroupSubscriptionSheet(
subscribeToGroupId: "1", // Замените "1" на ID вашего сообщества.
buttonConfiguration: .init(
height: .medium(.h44),
cornerRadius: 12
),
theme: .matchingColorScheme(.light),
sheetCornerRadius: 24,
presenter: .newUIWindow
) { result in
switch result {
case .success:
print("Успешная подписка")
case .failure(let error):
print("Не удалось подписаться: \(error)")
}
} accessTokenProvider: { force, completion in
guard let session = self.vkid?.currentAuthorizedSession else {
return
}
session.getFreshAccessToken(forceRefresh: force) { result in
switch result {
case .success((let accessToken, _)):
completion(.success(accessToken.value))
case .failure(let error):
completion(.failure(error))
}
}
}
self.vkid?.ui(for: sheetConfig).uiViewController { [weak self] result in
switch result {
case .success(let viewController):
self?.present(viewController, animated: true)
case .failure(let error):
print("Не удалось создать шторку подписки на сообщество: \(error)")
}
}