Xamarinformsandroid应用程序不获取DeviceTokenparsingSDK
我正在开发android和iOS的Xamarin表单应用程序。 我正在使用Parse SDK实现相同的PushNotifications。 我添加了Parse.Android dll引用.iroid项目中的.Droid项目和Parse.iOS dll。 我的问题是有时在Android上,我无法检索到DeviceToken。 在parsing安装类中没有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 (); } }
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>
还有一些上面提到的代码导致应用程序启动时崩溃。 我已经在这里和这里报告了这个问题
另外ParseClient.Initialize
是MainActivity的“OnCreate”方法的第一行,我传递了初始化所需的parsing键。
我调用LoadApplication (new App ())
后调用RegisterForPushNotifications方法。
下面附上的是parsing安装类的截图。
请让我知道如果我的代码中有一些问题,或者是parsingSDK的问题。
当你使用xamarin声明了推送通知,那么你必须在xamarin android和IOS这两个部分编写代码,如果你已经习惯了远程通知,那么使用推送尖锐的lib,这是一个最好的推送通知和注册你的应用程序并启用通知服务,如GCM和APSN相关的Android和IOS。
试试这个: https : //github.com/rdelrosario/xamarin-plugins/tree/master/PushNotification/PushNotification