https://id.vk.ru/authorize?response_type=code&client_id=12345&scope=groupsimport 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)")
}
}