Skip to content

Adobe AIR

Для плагина требуется AIR SDK версии 33.0 или выше.

Section titled “Для плагина требуется AIR SDK версии 33.0 или выше.”

Скачать SDK Пример проекта Документация по SDK API

Чтобы интегрировать push-уведомления Wavesend в ваше приложение Adobe Air, выполните следующие шаги:

  1. Возьмите PushNotifications.ane и добавьте его в свой проект.
  2. Добавьте библиотеки distriqt в ваш проект:
com.distriqt.playservices.Base
com.google.firebase.core

Скачать библиотеки Google Play Services

androidx.appcompat
com.google.android.material
androidx.recyclerview
androidx.core

Скачать библиотеки Android Support

com.distriqt.Core

Скачать библиотеку Distriqt Core

  1. Настройте ваш проект в Firebase Console.

  2. Поместите файл google-services.json в корневой каталог вашего проекта.

  1. Добавьте следующий код в процедуру запуска вашего приложения:
// установите колбэки push-уведомлений для плагина
var wavesend:PushNotification = PushNotification.getInstance();
wavesend.addEventListener(PushNotificationEvent.PERMISSION_GIVEN_WITH_TOKEN_EVENT, onToken);
wavesend.addEventListener(PushNotificationEvent.PERMISSION_REFUSED_EVENT, onError);
wavesend.addEventListener(PushNotificationEvent.PUSH_NOTIFICATION_RECEIVED_EVENT, onPushReceived);
// важно! Вызовите эту функцию после установки колбэков. Она запускает доставку всех ожидающих push-уведомлений.
wavesend.onDeviceReady();
// зарегистрируйтесь для получения push-уведомлений
wavesend.registerForPushNotification();

Функции-обработчики просты:

public function onToken(e:PushNotificationEvent):void{
trace("\n TOKEN: " + e.token + " ");
}
public function onError(e:PushNotificationEvent):void{
trace("\n TOKEN: " + e.errorMessage+ " ");
}
public function onPushReceived(e:PushNotificationEvent):void{
trace("\n TOKEN: " + JSON.stringify(e.parameters) + " ");
}
  1. Теперь настройте ваш app.xml. Замените PUSHWOOSH_APP_ID на ваш реальный App ID Wavesend. Для Android замените FCM_SENDER_ID на ваш Firebase Sender ID, а PACKAGE_NAME — на имя вашего пакета Android.

Для Android и iOS также убедитесь, что вы добавили свой Device API Token от Wavesend.

Важно: Убедитесь, что токен имеет доступ к правильному приложению в вашей Wavesend Control Panel. Узнать больше

<iPhone>
<InfoAdditions>
<
![CDATA[
<key>Wavesend_APPID</key>
<string>PUSHWOOSH_APP_ID</string>
<key>Wavesend_API_TOKEN</key>
<string>__YOUR_DEVICE_TYPE_API_TOKEN__</string>
]]>
</InfoAdditions>
<Entitlements>
<![CDATA[
<key>aps-environment</key>
<string>development</string>
]]>
</Entitlements>
<requestedDisplayResolution>high</requestedDisplayResolution>
</iPhone>
<android>
<manifestAdditions><![CDATA[
<manifest android:installLocation="auto">
<application>
<!-- Wavesend START -->
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<meta-data android:name="com.wavesend.appid" android:value="PUSHWOOSH_APP_ID" />
<meta-data android:name="com.wavesend.senderid" android:value="AFCM_SENDER_ID" />
<meta-data android:name="com.wavesend.apitoken" android:value="__YOUR_DEVICE_TYPE_API_TOKEN" />
<meta-data android:name="PW_BROADCAST_PUSH" android:value="true" />
<meta-data android:name="com.wavesend.notification_icon" android:value="@drawable/notification_small_icon" />
<meta-data android:name="com.wavesend.notification_service_extension" android:value="com.wavesend.nativeExtensions.WavesendNotificationServiceExtension"/>
<activity
android:name="com.wavesend.inapp.view.RichMediaWebActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.wavesend.inapp.view.RemoteUrlActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<receiver
android:name="com.wavesend.BootReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service
android:name="com.wavesend.FcmRegistrationService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name="com.wavesend.firebase.PushFcmIntentService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<activity
android:name="com.wavesend.internal.utils.PermissionActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<receiver android:name="com.wavesend.notification.LocalNotificationReceiver" />
<provider
android:name="com.wavesend.WavesendInitProvider"
android:authorities="PACKAGE_NAME.wavesendinitprovider"
android:enabled="true"
android:exported="false"
android:initOrder="50" />
<provider
android:initOrder="70"
android:enabled="true"
android:authorities="PACKAGE_NAME.firebasewavesendinitprovider" android:exported="false"
android:name="com.wavesend.firebase.FirebaseInitProvider"/>
<provider
android:name="com.wavesend.nativeExtensions.WavesendFirebaseInitProvider"
android:authorities="PACKAGE_NAME.FirebaseInitProvider"
android:enabled="true"
android:exported="false"
android:initOrder="60" />
<provider
android:name="com.wavesend.WavesendSharedDataProvider"
android:authorities="PACKAGE_NAME.WavesendSharedDataProvider"
android:enabled="true"
android:exported="true"
android:initOrder="60" />
<activity
android:name="com.wavesend.notification.NotificationOpenActivity"
android:noHistory="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:enabled="true"
android:exported="false" />
<receiver
android:name="com.wavesend.NotificationUpdateReceiver"
android:enabled="true"
android:exported="false" />
<meta-data
android:name="com.wavesend.plugin.badge"
android:value="com.wavesend.badge.BadgePlugin" />
<meta-data
android:name="com.wavesend.internal.plugin_provider"
android:value="com.wavesend.nativeExtensions.internal.AdobeAirPluginProvider" />
<meta-data
android:name="com.wavesend.plugin.inbox"
android:value="com.wavesend.inbox.WavesendInboxPlugin" />
<activity
android:name="com.wavesend.nativeExtensions.AirInboxActivity" />
<activity
android:name="com.wavesend.inbox.ui.presentation.view.activity.AttachmentActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<!-- Wavesend END -->
<!-- Firebase START -->
<service
android:name="com.google.firebase.components.ComponentDiscoveryService"
android:exported="false" >
<meta-data
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
android:name="com.google.firebase.components:com.google.firebase.datatransport.TransportRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
android:name="com.google.firebase.components:com.google.firebase.installations.FirebaseInstallationsRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="PACKAGE_NAME"/>
</intent-filter>
</receiver>
<service
android:name="com.google.firebase.messaging.FirebaseMessagingService"
android:exported="false" >
<intent-filter android:priority="-500" >
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.google.firebase.iid.FirebaseInstanceIdService" android:exported="true">
<intent-filter android:priority="-500">
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<provider
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:authorities="PACKAGE_NAME.firebaseinitprovider"
android:exported="false"
android:initOrder="100" />
<!-- Firebase END -->
<!-- Work-runtime START -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="PACKAGE_NAME.androidx-startup"
android:exported="false">
<!-- This entry makes WorkManagerInitializer discoverable. -->
<meta-data android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup" />
</provider>
<service
android:name="androidx.work.impl.background.systemalarm.SystemAlarmService"
android:directBootAware="false"
android:enabled="true"
android:exported="false" />
<service
android:name="androidx.work.impl.background.systemjob.SystemJobService"
android:directBootAware="false"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE" />
<receiver
android:name="androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver"
android:directBootAware="false"
android:enabled="true"
android:exported="false" />
<receiver
android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy"
android:directBootAware="false"
android:enabled="false"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
<receiver
android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy"
android:directBootAware="false"
android:enabled="false"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BATTERY_OKAY" />
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
<receiver
android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy"
android:directBootAware="false"
android:enabled="false"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
<action android:name="android.intent.action.DEVICE_STORAGE_OK" />
</intent-filter>
</receiver>
<receiver
android:name="androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy"
android:directBootAware="false"
android:enabled="false"
android:exported="false" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver
android:name="androidx.work.impl.background.systemalarm.RescheduleReceiver"
android:directBootAware="false"
android:enabled="false"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>
<receiver
android:name="androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver"
android:directBootAware="false"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="androidx.work.impl.background.systemalarm.UpdateProxies" />
</intent-filter>
</receiver>
<!-- Work-runtimme END -->
</application>
<!-- Permissions START -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- FCM connects to Firebase Services. -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- This app has permission to register and receive data message. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- Vibration in push notification -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!--BADGES-->
<!--for Samsung-->
<uses-permission android:name="com.sec.android.provider.badge.permission.READ"/>
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE"/>
<!--for htc-->
<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>
<!--for sony-->
<uses-permission android:name="com.sonyericsson.home.permission.BROADCAST_BADGE"/>
<uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>
<!--for apex-->
<uses-permission android:name="com.anddoes.launcher.permission.UPDATE_COUNT"/>
<!--for solid-->
<uses-permission android:name="com.majeur.launcher.permission.UPDATE_BADGE"/>
<!--for huawei-->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
<!--for ZUK-->
<uses-permission android:name="android.permission.READ_APP_BADGE"/>
<!--for OPPO-->
<uses-permission android:name="com.oppo.launcher.permission.READ_SETTINGS"/>
<uses-permission android:name="com.oppo.launcher.permission.WRITE_SETTINGS"/>
<!--for EvMe-->
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_READ"/>
<uses-permission android:name="me.everything.badger.permission.BADGE_COUNT_WRITE"/>
<!-- Permissions END -->
</manifest>
]]>
</manifestAdditions>
<colorDepth>16bit</colorDepth>
</android>
  1. Убедитесь, что вы установили флажок «Package» на панели «Native Extensions» в настройках. Также выберите путь к последней версии iOS SDK, как показано на скриншоте ниже, при экспорте для iOS:

Поделитесь с нами своим мнением

Section titled “Поделитесь с нами своим мнением”

Ваши отзывы помогают нам делать наш продукт лучше, и мы будем рады, если вы расскажете нам о любых проблемах, возникших в процессе интеграции SDK. Если вы столкнулись с какими-либо трудностями, пожалуйста, не стесняйтесь поделиться своими мыслями с нами через эту форму.