Кастомизация для Xamarin Android
Отслеживание покупок в приложении
Section titled “Отслеживание покупок в приложении”Для отслеживания покупок в приложении вам следует вызывать метод SendInappPurchase класса PushNotificationsManager, когда пользователь покупает продукт:
public virtual void SendInappPurchase (string sku, BigDecimal price, string currency);sku– идентификатор купленного продуктаprice– цена продуктаcurrency– валюта (например, «USD»)
Пример:
PushNotificationsManager.Instance.SendInappPurchase("com.your.app.Marketing", BigDecimal.ValueOf(149.95), "USD");Deep Linking
Section titled “Deep Linking”Добавьте атрибут IntentFilter в класс вашей activity, которая будет обрабатывать deep link, следующим образом:
using Android.Content;using Android.Content.PM;
[Activity(Label = "PromoActivity", ConfigurationChanges = ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait)][IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, DataScheme = "com.wavesend", DataHost = "promotion")]class PromoActivity : ActivityВ приведенном выше примере deep link открывает PromoActivity. Для простоты, базовая реализация ниже отображает оповещение со значением идентификатора промоакции.
using System;using Android.App;using Android.OS;using Android.Text;using Android.Widget;using Android.Content;using Android.Content.PM;
namespace PushwooshSample{ [Activity(Label = "PromoActivity", ConfigurationChanges = ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait)] [IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, DataScheme = "com.wavesend", DataHost = "promotion")] public class PromoActivity : Activity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Title = "Deep link activity";
Intent intent = Intent; String action = intent.Action; var data = intent.Data; if (TextUtils.Equals(action, Intent.ActionView)) { OpenUrl(data); } }
void OpenUrl(Android.Net.Uri uri) { String promoId = uri.GetQueryParameter("id"); Toast.MakeText(ApplicationContext, promoId, ToastLength.Long).Show(); } }}Использование значков (Badges) на Android
Section titled “Использование значков (Badges) на Android”Wavesend поддерживает установку числа на значке ярлыка приложения для следующих лаунчеров Android: Sony, Samsung, LG, HTC, ASUS, ADW, APEX, NOVA, HUAWEI, ZUK, OPPO.
Пример:
using Wavesend.Badge;
WavesendBadge.BadgeNumber = badgeInt;Открытие кастомной Activity
Section titled “Открытие кастомной Activity”Если вы хотите запускать определенную activity в ответ на push-уведомления, добавьте к этой activity следующий IntentFilter:
[Activity][IntentFilter(new[] { "${applicationId}.MESSAGE" }, Categories = new[] { Intent.CategoryDefault })]public class MyActivity : ActivityУправление уровнем логирования
Section titled “Управление уровнем логирования”Для помощи в отладке и интеграции SDK по умолчанию выводит все запросы в консоль. Когда вы будете готовы к сборке для продакшена, добавьте метаданные «PW_LOG_LEVEL» со значением «ERROR» в AndroidManifest.xml. Таким образом, в консоль будет выводиться только информация об ошибках. Другие возможные опции:
NONE - нет логов от SDK ERROR - отображать только ошибки в консоли WARN - отображать предупреждения и ошибки INFO - отображать информационные сообщения DEBUG - теперь отображается даже отладочная информация NOISE - все, что может вывести SDK
<meta-data android:name="com.wavesend.log_level" android:value="ERROR" />Использование ProGuard
Section titled “Использование ProGuard”Добавьте следующие опции, если вы используете ProGuard:
-keep class com.wavesend.** { *; }-dontwarn com.wavesend.**Кастомизация поведения при открытии уведомления
Section titled “Кастомизация поведения при открытии уведомления”Если вам нужно выбрать, какую activity отображать в результате push-уведомления, вы можете создать кастомный NotificationServiceExtension и указать полное имя класса вашего NotificationServiceExtension в метаданных под значением «com.wavesend.notification_service_extension».
using System;using Android.App;using Android.Content;using Android.Runtime;using Wavesend.Notification;
[assembly: MetaData("com.wavesend.notification_service_extension", Value = "com.your.package.YourNotificationServiceExtension")]namespace YourNamespace{ [Register("com/your/package/YourNotificationServiceExtension")] public class YourNotificationServiceExtension : NotificationServiceExtension { protected override void StartActivityForPushMessage(PushMessage message) { // base.StartActivityForPushMessage(message) запускает activity лаунчера по умолчанию // или activity, помеченную действием ${applicationId}.MESSAGE. // Просто не вызывайте его, чтобы переопределить это поведение.
// вместо этого запустите вашу activity: Intent launchIntent = new Intent(ApplicationContext, typeof(YourActivity)); launchIntent.SetFlags(ActivityFlags.NewTask);
ApplicationContext.StartActivity(launchIntent); } }}Кастомизация push-уведомлений
Section titled “Кастомизация push-уведомлений”Чтобы кастомизировать вид push-уведомлений, вам необходимо создать кастомную Factory. Вы можете создать кастомный NotificationFactory и указать полное имя класса вашего NotificationFactory в метаданных под значением «com.wavesend.notification_factory».
<meta-data android:name="com.wavesend.notification_factory" android:value="com.your.package.YourNotificationFactory" />using System;using Android.App;using Android.Runtime;using Wavesend.Notification;
[assembly: MetaData("com.wavesend.notification_factory", Value = "com.your.package.YourAppNotificationFactory")]namespace PushwooshSample{ [Register("com/your/package/YourAppNotificationFactory")] public class YourAppNotificationFactory : WavesendNotificationFactory { public override Notification OnGenerateNotification(PushMessage pushData) { // TODO: сгенерируйте и верните кастомное уведомление
return base.OnGenerateNotification(pushData); } }}URL частного эндпоинта
Section titled “URL частного эндпоинта”Wavesend предоставляет частные эндпоинты для клиентов с подпиской Custom Plan. Чтобы настроить частный эндпоинт для SDK, вам необходимо добавить следующее в ваш файл AndroidManifest.xml:
<meta-data android:name="com.wavesend.base_url" android:value="WAVESEND_PRIVATE_ENDPOINT_URL_PROVIDED" />Поделитесь с нами своим мнением
Section titled “Поделитесь с нами своим мнением”Ваши отзывы помогают нам делать наш продукт лучше, поэтому мы будем рады, если вы поделитесь с нами любыми проблемами, возникшими в процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, поделитесь своими мыслями с нами через эту форму.