Настройка Xamarin Android
Отслеживание покупок в приложении (In-App Purchase)
Anchor link toДля отслеживания покупок в приложении необходимо вызывать метод SendInappPurchase
класса PushNotificationsManager
, когда пользователь покупает продукт:
public virtual void SendInappPurchase (string sku, BigDecimal price, string currency);
sku
– ID купленного продуктаprice
– цена продуктаcurrency
– валюта (например, “USD”)
Пример:
PushNotificationsManager.Instance.SendInappPurchase("com.your.app.Marketing", BigDecimal.ValueOf(149.95), "USD");
Deep Linking
Anchor link toДобавьте атрибут 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.pushwoosh", DataHost = "promotion")]class PromoActivity : Activity
В приведенном выше примере deep link открывает PromoActivity
. Для простоты, базовая реализация ниже отображает оповещение со значением promo id.
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.pushwoosh", 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
Anchor link toPushwoosh поддерживает установку числа на значке (badge) ярлыка приложения для следующих лаунчеров Android:
Sony, Samsung, LG, HTC, ASUS, ADW, APEX, NOVA, HUAWEI, ZUK, OPPO.
Пример:
using Pushwoosh.Badge;
PushwooshBadge.BadgeNumber = badgeInt;
Открытие кастомной Activity
Anchor link toЕсли вы хотите запускать определенную activity в ответ на push-уведомления, добавьте к этой activity следующий IntentFilter
:
[Activity][IntentFilter(new[] { "${applicationId}.MESSAGE" }, Categories = new[] { Intent.CategoryDefault })]public class MyActivity : Activity
Управление уровнем логирования
Anchor link toДля помощи в отладке и интеграции SDK по умолчанию выводит все запросы в консоль. Когда вы будете готовы к сборке для продакшена, добавьте метаданные "PW_LOG_LEVEL"
со значением "ERROR"
в AndroidManifest.xml
. Таким образом, в консоль будет выводиться только информация об ошибках. Другие возможные опции:
NONE - Нет логов от SDK
ERROR - Отображать только ошибки в консоли
WARN - Отображать предупреждения и ошибки
INFO - Отображать информационные сообщения
DEBUG - Отображается даже отладочная информация
NOISE - Все, что может вывести SDK
<meta-data android:name="com.pushwoosh.log_level" android:value="ERROR" />
Использование ProGuard
Anchor link toЕсли вы используете ProGuard, добавьте следующие опции:
-keep class com.pushwoosh.** { *; }-dontwarn com.pushwoosh.**
Настройка поведения при открытии уведомления
Anchor link toЕсли вам нужно выбрать, какую activity отображать в результате получения push-уведомления, вы можете создать кастомный NotificationServiceExtension и указать полное имя класса вашего NotificationServiceExtension
в метаданных под значением “com.pushwoosh.notification_service_extension”
.
using System;using Android.App;using Android.Content;using Android.Runtime;using Pushwoosh.Notification;
[assembly: MetaData("com.pushwoosh.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-уведомлений
Anchor link toЧтобы настроить внешний вид push-уведомлений, вам необходимо создать кастомную фабрику. Вы можете создать кастомный NotificationFactory и указать полное имя класса вашей NotificationFactory
в метаданных под значением “com.pushwoosh.notification_factory”
.
<meta-data android:name="com.pushwoosh.notification_factory" android:value="com.your.package.YourNotificationFactory" />
using System;using Android.App;using Android.Runtime;using Pushwoosh.Notification;
[assembly: MetaData("com.pushwoosh.notification_factory", Value = "com.your.package.YourAppNotificationFactory")]namespace PushwooshSample{ [Register("com/your/package/YourAppNotificationFactory")] public class YourAppNotificationFactory : PushwooshNotificationFactory { public override Notification OnGenerateNotification(PushMessage pushData) { // TODO: сгенерируйте и верните кастомное уведомление
return base.OnGenerateNotification(pushData); } }}
URL приватного эндпоинта
Anchor link toPushwoosh предоставляет приватные эндпоинты для клиентов с подпиской по тарифу Custom Plan. Чтобы настроить приватный эндпоинт для SDK, вам необходимо добавить следующее в ваш файл AndroidManifest.xml:
<meta-data android:name="com.pushwoosh.base_url" android:value="PUSHWOOSH_PRIVATE_ENDPOINT_URL_PROVIDED" />
Поделитесь с нами своим мнением
Anchor link toВаши отзывы помогают нам делать наш продукт лучше, поэтому мы будем рады, если вы поделитесь с нами своим мнением при возникновении любых проблем в процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, не стесняйтесь поделиться своими мыслями через эту форму.