Быстрый старт
В статье приведён пример быстрой интегр ации Altcraft mSDK для Flutter.
Шаг 0. Предварительные условия
- Flutter-проект создан и запускается на Android/iOS.
- Нативные push-провайдеры интегрированы в проект:
- На нативной стороне выполнена настройка Altcraft mSDK:
- зарегистрированы push-провайдеры;
- при необходимости зарегистрирован JWT-провайдер;
- настроен перехват входящих push-уведомлений и передача в SDK.
- Подготовьте backend вашего приложения к работе с JWT.
JWT-провайдер и push token provider регистрируются нативно: в Application.onCreate на Android и в AppDelegate на iOS. Через Dart API они не передаются.
Шаг 1. Установка пакета
Добавьте пакет в Flutter-проект:
flutter pub add altcraft_sdk
После установки выполните получение зависимостей:
flutter pub get
Шаг 2. Конфигурация и инициализация SDK
Импортируйте SDK и выполните инициализацию на старте приложения, например в main.dart:
import 'package:altcraft_sdk/altcraft_sdk.dart';
import 'package:flutter/widgets.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await AltcraftSDK.initialize(
const AltcraftConfig(
apiUrl: 'https://pxl-example.altcraft.com',
appInfo: AppInfo(
appID: '1:000000000000:android:0000000000000000',
appIID: '00000000-0000-4000-8000-000000000000',
appVer: '1.0.0',
),
providerPriorityList: ['android-firebase'],
),
);
runApp(const AppRoot());
}
class AppRoot extends StatelessWidget {
const AppRoot({super.key});
@override
Widget build(BuildContext context) {
return const Directionality(
textDirection: TextDirection.ltr,
child: SizedBox.shrink(),
);
}
}
Шаг 3. Выполнение подписки на push-уведомления
Подписка на push выполняется вызовом pushSubscribe():
import 'package:altcraft_sdk/altcraft_sdk.dart';
void subscribeToPush() {
AltcraftSDK.pushSubscribe(
sync: true,
profileFields: const {
'_fname': 'Ivan',
'_lname': 'Petrov',
},
customFields: const {
'source': 'flutter_app',
},
cats: const [
{
'name': 'developer_news',
'active': true,
},
],
replace: null,
skipTriggers: null,
);
}
sync: true— выполняет запрос синхронно на нативной стороне. Сам Dart-метод всё равно возвращаетFuture<void>; результат запроса приходит через события SDK.sync: false— выполняет запрос асинхронно. Еслиsyncне передан, нативный SDK использует значениеtrue.profileFields— поля профиля.customFields— пользовательские поля подписки.cats— категории подписки.
Метод pushSubscribe() возвращает Future<void>. В примере вызов без await допустим (fire-and-forget), так как результат обработки доступен через события SDK.
Шаг 4. Подписка на события SDK
Для получения результатов вызовов и внутренних событий SDK используйте subscribeToEvents():
import 'dart:async';
import 'package:altcraft_sdk/altcraft_sdk.dart';
StreamSubscription<SdkEvent>? sdkEventsSubscription;
void subscribeToSdkEvents() {
sdkEventsSubscription = AltcraftSDK.subscribeToEvents().listen(
(SdkEvent event) {
// event.function — имя функции SDK, которая вызвала событие
// event.type — тип события: event / error / retryError
// event.code — код события
// event.message — сообщение события
// event.value — дополнительные данные, если они есть
print('[AltcraftSDK event] ${event.function}: ${event.message}');
},
);
}
Future<void> unsubscribeFromSdkEvents() async {
await sdkEventsSubscription?.cancel();
sdkEventsSubscription = null;
await AltcraftSDK.unsubscribeFromEvents();
}
Шаг 5. Запрос разрешения на уведомления для Android
Для Android можно запросить разрешение на отправку уведомлений через SDK:
import 'package:altcraft_sdk/altcraft_sdk.dart';
Future<void> requestPushPermission() async {
final bool granted = await AltcraftSDK.requestNotificationPermission();
if (granted) {
AltcraftSDK.pushSubscribe(sync: true);
}
}
Для iOS разрешения на уведомления настраиваются в нативной части приложения вместе с UNUserNotificationCenter, APNS и Notification Service Extension. Метод requestNotificationPermission() в текущем Flutter bridge предназначен для Android; на iOS он возвращает false.