# Добавление тестовых push-устройств

Вы можете использовать тестовые устройства (Test Devices) для предварительного просмотра push-уведомлений на устройстве перед их отправкой пользователям приложения. Для этого вам необходимо **зарегистрировать ваше устройство** (с установленным на нем приложением) в качестве **тестового устройства (Test Device)**.

Чтобы добавить тестовое устройство:
1. Перейдите в раздел **Test devices** в вашем аккаунте Pushwoosh.

<img src="/test-your-integration-test-devices-1.webp" alt="Раздел Test devices в аккаунте Pushwoosh"/>

2. Нажмите на выпадающую кнопку **Add Device** в правом верхнем углу и выберите **Push**.

<img src="/test-your-integration-test-devices-2.webp" alt="Выпадающая кнопка Add Device с опцией Push в разделе Test Devices"/>

Вы можете добавить тестовое push-устройство одним из двух способов: автоматическая настройка с помощью QR-кода или ручная настройка.

## Автоматическое добавление тестовых устройств

Этот метод подходит только для устройств на iOS и Android.

1. В разделе **Test Devices** нажмите **Add Device** и выберите **Push**.
2. Отсканируйте QR-код, который появится во всплывающем окне. Это сгенерирует deep link, который Pushwoosh SDK сможет обработать для автоматической регистрации вашего устройства в качестве тестового.
3. Добавьте deep link в конфигурацию приложения:
* **Для Android**: добавьте его в файл `AndroidManifest.xml`.
* **Для iOS**: добавьте его в файл `Info.plist`.

Для получения более подробной информации следуйте инструкциям для Android и iOS в [разделе «Реализация».](/ru/developer/first-steps/test-your-integration/test-devices#implementation)

<Aside type="tip" title="Совет по использованию сканеров QR-кодов">
Убедитесь, что отсканированная ссылка открывается в нативном браузере, а не во встроенном webview сканера QR-кодов. Многие сканеры QR-кодов имеют для этого кнопку «Открыть в браузере».
</Aside>


## Добавление тестовых устройств вручную

Если вы предпочитаете регистрировать тестовое устройство вручную, выполните следующие шаги:

1. Получите **Hardware ID (HWID)** устройства из успешного вызова API [`/registerDevice`](/ru/developer/api-reference/device-api#registerdevice).
2. Заполните обязательные поля:
   * **Device Name**: описательное имя для тестового устройства (например, «Android Джона»).
   * **Device HWID**: уникальный Hardware ID устройства.
   * **Device Type**: выберите платформу (например, iOS, Android, Web).
   * **Description (необязательно)**: добавьте любые примечания или детали об устройстве для справки.
3. Нажмите **Save**, чтобы зарегистрировать тестовое устройство.

После регистрации тестовое устройство будет доступно в разделе **Test Devices**.


## Реализация

### Android

1. [Интегрируйте Pushwoosh SDK](/ru/developer/pushwoosh-sdk/android-sdk/firebase-integration/integrate-pushwoosh-android-sdk/) с вашим приложением.

2. Добавьте **DeepLinkActivity** в ваш _AndroidManifest.xml_:

```txt
<activity
          android:name="com.pushwoosh.DeepLinkActivity"
          android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="pushwoosh-YOUR_PUSHWOOSH_APP_ID" />
  </intent-filter>
</activity>
```

Не забудьте заменить _YOUR\_PUSHWOOSH\_APP\_ID_ в приведенном выше xml на ваш Pushwoosh App ID.\
Пример: _\<data android:scheme="pushwoosh-ABCDE-EDCBA" />_

3. Запустите приложение, чтобы подписаться на push-уведомления.

4. Отсканируйте QR-код в форме **Test Devices**, используя любое подходящее приложение для сканирования QR-кодов*. Появится всплывающее сообщение (toast message), информирующее о статусе регистрации тестового устройства.

\* большинство приложений для сканирования QR-кодов правильно обрабатывают такие deep links, вот лишь некоторые из них:

* [QR & Barcode Scanner, Gamma Play](https://play.google.com/store/apps/details?id=com.gamma.scan)
* [QR & Barcode Scanner, Maker, AppSourceHub](https://play.google.com/store/apps/details?id=qrcode.scanner.qrmaker)

### iOS

1. [Интегрируйте Pushwoosh SDK](/ru/developer/pushwoosh-sdk/ios-sdk/setting-up-pushwoosh-ios-sdk/) с вашим приложением.

2. Добавьте схему URL _pushwoosh-YOUR\_PUSHWOOSH\_APP\_ID_ в файл _Info.plist_:

```xml
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLName</key>
    <string>com.pushwoosh.scheme</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>pushwoosh-YOUR_PUSHWOOSH_APP_ID</string>
    </array>
  </dict>
</array>
```

Не забудьте заменить _YOUR\_PUSHWOOSH\_APP\_ID_ в приведенном выше XML на ваш Pushwoosh App ID.\
Пример: _pushwoosh-ABCDE-EDCBA_

<Aside type="caution">
 **Если ваш проект создан только на SwiftUI, вам необходимо добавить SceneDelegate**

SwiftUI управляет жизненным циклом приложения иначе, чем UIKit. Чтобы обеспечить корректную работу определенных системных событий, таких как регистрация тестового устройства для push-уведомлений или обработка deep links, вам необходимо явно добавить и зарегистрировать SceneDelegate.

Без него эти события могут не срабатывать должным образом, и регистрация для получения push-уведомлений может завершиться неудачей.

Если вы не используете SwiftUI, вы можете пропустить этот шаг и перейти непосредственно к **шагу 3**.
</Aside>

**Info.plist**
<details>
  <summary>Добавьте `UIApplicationSceneManifest` в ваш `Info.plist`.</summary>

  ```xml
	<key>UIApplicationSceneManifest</key>
	<dict>
		<key>UIApplicationSupportsMultipleScenes</key>
		<true/>
		<key>UISceneConfigurations</key>
		<dict>
			<key>UIWindowSceneSessionRoleApplication</key>
			<array>
				<dict>
					<key>UISceneConfigurationName</key>
					<string></string>
					<key>UISceneDelegateClassName</key>
					<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
				</dict>
			</array>
		</dict>
	</dict>
  ```

</details>

**SceneDelegate**
<details>
  <summary>Добавьте код `SceneDelegate`, как показано в примере ниже.</summary>

  ```swift
import SwiftUI

@main
struct DemoApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

class SceneDelegate: NSObject, UIWindowSceneDelegate {
    
    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let _ = (scene as? UIWindowScene) else { return }
    }
}

class AppDelegate: NSObject, UIApplicationDelegate, PWMessagingDelegate {
    
    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        let sceneConfig: UISceneConfiguration = UISceneConfiguration(name: nil, sessionRole: connectingSceneSession.role)
        sceneConfig.delegateClass = SceneDelegate.self
        return sceneConfig
    }

}
  ```

</details>

3. Запустите приложение, чтобы подписаться на push-уведомления.

4. Отсканируйте QR-код в форме **Test Devices**, используя любой подходящий сканер QR-кодов.