Перейти к содержанию

Настройка 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 to

Pushwoosh поддерживает установку числа на значке (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 to

Pushwoosh предоставляет приватные эндпоинты для клиентов с подпиской по тарифу Custom Plan. Чтобы настроить приватный эндпоинт для SDK, вам необходимо добавить следующее в ваш файл AndroidManifest.xml:

<meta-data android:name="com.pushwoosh.base_url" android:value="PUSHWOOSH_PRIVATE_ENDPOINT_URL_PROVIDED" />

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

Anchor link to

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