Xamarin表示android应用程序没有获取DeviceToken Parse SDK

Amr*_*rut 40 c# android xamarin.android parse-platform xamarin.forms

我正在为Android和iOS开发xamarin表单应用程序.我正在使用Parse SDK实现PushNotifications.我在.iOS项目的参考文献中引用了.Droid项目和Parse.iOS dll中添加了Parse.Android dll.我的问题有时在Android上我无法检索DeviceToken.解析安装类中没有DeviceToken和pushtype的条目.它的值是"未定义的".下面是我的代码以及清单.

public  async void RegisterForPushNotifications ()
    {
        try {
            if (Utility.isNetworkConnected ()) {
                await ParsePush.SubscribeAsync ("");
                var installation = ParseInstallation.CurrentInstallation;
                // I'm saving the DeviceToken in App.regId for future uses
                App.regId = System.String.IsNullOrWhiteSpace (installation.DeviceToken) ? "" : installation.DeviceToken;
                ParsePush.ParsePushNotificationReceived += PushNotificationReceived;
            }
        } catch (ParseException e) {
            System.Diagnostics.Debug.WriteLine (e.StackTrace);
        } catch (Java.Lang.Exception e) {
            e.PrintStackTrace ();
        }
    }
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.nirvaniclabs">
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="23" />
<application android:label="RxLifetime" android:icon="@drawable/icon" android:largeHeap="true">
    <receiver android:name="parse.ParsePushBroadcastReceiver" 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="com.nirvaniclabs" />
        </intent-filter>
    </receiver>
    <service android:name="parse.ParsePushService" />
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.LOCATION_HARDWARE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:protectionLevel="signature" android:name="com.nirvaniclabs.permission.C2D_MESSAGE" />
<uses-permission android:name="com.nirvaniclabs.permission.C2D_MESSAGE" />
</manifest>
Run Code Online (Sandbox Code Playgroud)

还有一些上面提到的代码在app启动时导致崩溃.我在这里这里报告了这个问题

也是ParseClient.InitializeMainActivity的第一行'OnCreate'方法,我传递初始化所需的解析密钥.

我调用后调用RegisterForPushNotifications方法LoadApplication (new App ()).

下面是解析安装类的屏幕截图.

解析安装

如果我的代码中存在某些问题,请告知我们是否是解析SDK的问题.

小智 1

当您使用 xamarin 声明推送通知时,您必须在 xamarin android 和 IOS 等两个部分上编写代码,并且如果您已经习惯了远程通知,则使用推送 Sharp lib,这是推送通知的最佳选择并注册您的应用程序并启用与 Android 和 IOS 相关的通知服务,例如 GCM 和 APSN。

请尝试这个: https: //github.com/rdelrosario/xamarin-plugins/tree/master/PushNotification/PushNotification