Архитектура SDK

## Ссылки на оригиналы

API

Mobile SDK

http://stackoverflow.com/questions/685300/is-there-a-way-to-override-class-variables-in-java

## Mobile SDK

### Android

Because the Android and Amazon platforms are so similar, you won’t need to tailor your transport settings specifically to either host. The SDK will automatically detect the device’s operating system and use the correct transport at runtime. For more information, see the FCM setupfor Android,  and the ADM setup for Amazon.

Пользователский айдишник цепляется из AdvertisingID

**Nevopush**

Класс, *синглетон*, инициализируем при запуске приложения, дальше имеет глобальную точку доступа.

**Nevopush.getInstance()** - возвращает этот экземпляр.

**Nevopush.Init() -** создает экземпляр этого класса, создает экземпляры других классов, используемых позднее(PushBuilder, PushListener, PushMessagingService) иницилизируя их конфигом.

Конфиг(опции) описываются в **Nevopush.properties**

**getPushManager() -**  возвращает менеджера пуш-уведомлений

**getNotificationBuilder()**

**getAnalytics()**

**getReceiver()???**

**Analytics()**

EnableAnalytics()

DisableAnalytics()

**PushManager**

внезапно, класс, который управляет пушами

**EnableNotification() -** включить пуш-уведомления

**DisableNotification() -** выключить пуш-уведомления

**EnableDisplay()** - включить отображение пуш-уведомлений

**DisableDisplay() -** выключить отображение пуш-уведомлений

**EnableSound()** - включить звук

**DisableSound() -** выключить звук

**EnableVibrate()** - включить вибрацию

**DisableVibrate() -** выключить вибрацию

**EnableLocation()** - включить обновление местоположения

**DisableLocation() -** выключить обновление местоположения

**SetSilentTime(Time before, Time after);**  - настроить тихое время

**EnableSilent() -** включить тихий режим

**DisableSilent() -** выключить тихий режим

**getUSer()** - получает текущего пользователя

**Pushuser**

**getUserId();**

**setUserID(string); default - adverisingID**

**SetGroup()**

**GetGroups()**

**NotificationBuilder**

**ShowNotification()**

То, что сейчас называется notificationUtils();

**NevopushMessagingService**

**protected void onChannelCreated**(@NonNull Context context, @NonNull String )

**protected void onChannelUpdated**(@NonNull Context context, @NonNull String )

**protected void onChannelRegistrationFailed**(Context context)

**protected void onPushReceived**(@NonNull Context context, @NonNull PushMessage message, boolean notificationPosted)

**protected void onNotificationPosted**(@NonNull Context context, @NonNull NotificationInfo notificationInfo)

**protected boolean onNotificationOpened**(@NonNull Context context, @NonNull NotificationInfo notificationInfo)

**protected boolean onNotificationOpened**(@NonNull Context context, @NonNull NotificationInfo notificationInfo, @NonNull ActionButtonInfo actionButtonInfo)

**protected void onNotificationDismissed**(@NonNull Context context, @NonNull NotificationInfo notificationInfo)

```
 public void onAirshipReady(@NonNull UAirship airship) {
      airship.getPushManager().setUserNotificationsEnabled(true);
  }

  @Override
  public AirshipConfigOptions createAirshipConfigOptions(@NonNull Context context) {
      AirshipConfigOptions options = new AirshipConfigOptions.Builder()
          .setDevelopmentAppKey("Your Development App Key")
          .setDevelopmentAppSecret("Your Development App Secret")
          .setProductionAppKey("Your Production App Key")
          .setProductionAppSecret("Your Production App Secret")
          .setGcmSender("Your Google API Project Number") // FCM/GCM sender ID
          .setNotificationIcon(R.drawable.ic_notification)
          .build();

      return options;
  }

```

Очистить все уведомления

```
NotificationManagerCompat.from(context).cancelAll();

```