> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pnlight.app/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK для Flutter

> Установите пакет Flutter pnlight_sdk, настройте iOS Podfile и Info.plist и инициализируйте SDK PNLight в приложении Flutter для iOS.

Используйте `pnlight_sdk` в приложениях Flutter, которым нужен PNLight на iOS.

## Требования

* Flutter 3.3.0+
* Dart 2.17.0 или новее, но ниже 4.0.0
* iOS 12.0+

## Установка

Добавьте пакет:

```bash theme={null}
flutter pub add pnlight_sdk
```

Страница пакета: [pnlight\_sdk на pub.dev](https://pub.dev/packages/pnlight_sdk).

[![Версия SDK для Flutter](https://img.shields.io/pub/v/pnlight_sdk?label=Flutter)](https://pub.dev/packages/pnlight_sdk)

## Настройка iOS

Если вы используете `RemoteUiView`, добавьте источник CocoaPods для DivKit в `ios/Podfile` перед другими источниками:

```ruby theme={null}
source 'https://github.com/divkit/divkit-ios.git'
```

Если приложение собирает IDFA на iOS 14.0+, добавьте `NSUserTrackingUsageDescription` в `Info.plist`:

```xml theme={null}
<key>NSUserTrackingUsageDescription</key>
<string>This app uses device tracking to support attribution and analytics.</string>
```

## Инициализация SDK

```dart theme={null}
import 'package:pnlight_sdk/pnlight_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await PNLightSDK.initialize('pnlight_sdk_token');

  runApp(const MyApp());
}
```

## Основные вызовы

```dart theme={null}
final success = await PNLightSDK.addAttribution(
  provider: 'appsFlyer',
  data: {'af_status': 'Non-organic'},
  identifier: 'appsFlyerCustomerId',
);

await PNLightSDK.logEvent('paywall_viewed', {
  'placement': 'paywall',
});
```

`logEvent` отправляет необязательные события приложения в PNLight. Их можно просматривать в разделе **Аналитика → События приложения**, на странице **События** и в хронологии клиентов.

## IDFA после ATT

Если PNLight инициализируется до завершения запроса App Tracking Transparency, после получения разрешения вызовите `updateIdfa()`, чтобы PNLight получил разрешённый IDFA.

```dart theme={null}
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
import 'package:pnlight_sdk/pnlight_sdk.dart';

await AppTrackingTransparency.requestTrackingAuthorization();
await PNLightSDK.updateIdfa();
```

## Remote UI

```dart theme={null}
import 'package:pnlight_sdk/pnlight_sdk.dart';

RemoteUiView(
  placement: 'paywall',
  cardId: 'paywall_card',
  ignoreCache: false,
  onAction: (RemoteUiActionEvent event) async {
    if (event.path == 'purchase') {
      final success = await startPurchase(event.params['id']);
      if (success) {
        openMainScreen();
      }
    }
  },
  onError: (Object error) {
    // Show a local fallback or close the screen.
  },
)
```

<Note>
  Пакет Flutter служит оболочкой SDK PNLight для iOS. Не вызывайте методы SDK PNLight на неподдерживаемых платформах.
</Note>
