Облачные сообщения Firebase и Центр уведомлений Azure - PullRequest
0 голосов
/ 02 октября 2018

У меня есть кроссплатформенный проект Xamarin для Visual Studio, и я получаю сообщение об ошибке при попытке получения уведомлений, работающих с помощью концентратора уведомлений Azure в проекте Android.В классе FirebaseInstanceIdService-derived я получаю сообщение об ошибке при попытке создать экземпляр объекта NotificationHub.Это вызывается для регистрации пользователя / устройства в Центре уведомлений Azure.

NotificationHub hub = new NotificationHub(Constants.NotificationHubName, Constants.ListenConnectionString, this);

Обычно я получаю эту ошибку:

Unhandled Exception: Java.Lang.NullPointerException: occurred.

Но также получили:

Unhandled Exception: Java.Lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference occurred.

Я звоню из DependencyService, который вызывается в событии OnAppearing на главной странице.Я не могу полагаться на OnTokenRefresh () в классе, производном от FirebaseInstanceIdService, потому что мне нужно, чтобы пользователь сначала вошел в систему.

Я подтвердил, что имя концентратора и строка подключения указаны правильно.И ошибка, связанная с контекстом, безусловно, делает ее похожей на это. "Но я не уверен, в чем проблема, поскольку именно так она обрабатывается во всем примере кода, который я видел.

Любые предложениябудет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Спасибо, Микаса.Вот метод:

//AuthenticatedUser is a class in the mobile app.

public void RegisterWithNotificationServer(AuthenticatedUser savedUser)
        {
            string token = FirebaseInstanceId.Instance.Token;

            string customerNotificationTag = "customerid:" + savedUser.CustomerNotificationTagID;
            string userNotificationTag = "userid:" + savedUser.UserNotificationTagID;

        //Hub variable defined with class scope.            
            hub = new NotificationHub(Constants.NotificationHubName, Constants.ListenConnectionString, this);

            List<string> tags = new List<string>() { customerNotificationTag, userNotificationTag };
            Registration registration = hub.Register(token, tags.ToArray());
            string regID = registration.RegistrationId;

        }
0 голосов
/ 02 октября 2018

вставили ли вы следующие элементы в манифест?

    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<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" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="${applicationId}" />
    </intent-filter>
</receiver>

Проверить:

Ps.Вы можете разместить другой код?Это может быть полезно для выявления проблемы.

...