Xamarin, передача данных между публичным и нативным приложением
Недавно использую Xamarin, не могу понять как правильно передавать данные из нативной части в общую. Например мне нужно сохранить FCM токен. Часть которая отправляет данные на сервер находиться в публичном(общем) проекте, но получаю токен я в нативном андроиде и IOS. Пытался сделать вот так:
Публичный проект:
public interface IFirebaseService
{
event EventHandler OnNewTokenGet;
}
private IFirebaseService _firebase;
public MainPage()
{
_firebase = DependencyService.Get<IFirebaseService>();
_firebase.OnNewTokenGet += _firebase_OnNewTokenGet;
_api = ServicesCollection.Services.GetService<APIService>();
InitializeComponent();
}
private async void _firebase_OnNewTokenGet(object sender, EventArgs e)
{
var test = e as NotificationEventArgs;
await DisplayAlert("Увага", test.Token, "OK");
}
Андроид приложение:
public class FirebaseService : FirebaseMessagingService, IFirebaseService
{
public event EventHandler OnNewTokenGet;
public override void OnNewToken(string token)
{
base.OnNewToken(token);
string str = token;
NotificationEventArgs args = new NotificationEventArgs
{
Token = token
};
OnNewTokenGet?.Invoke(null, args);
}
}
Получаю вполне предсказуемую ошибку null reference, так как событие происходить раньше подписчика, если я не ошибаюсь. Дайте пожалуйста "хлебных крошек" куда двигаться, хороший пример.