Ich entwickle Xamarin Formulare Anwendung für Android und iOS. Ich implementiere die PushNotifications für das gleiche mit Parse SDK. Ich habe Parse.Android dll in Referenzen von .Droid-Projekt und Parse.iOS dll in Referenzen von .iOS-Projekt hinzugefügt. Mein Problem ist manchmal auf Android Ich kann das DeviceToken nicht abrufen. In der Parse-Installationsklasse gibt es keine Einträge für DeviceToken und pushtype. Seine Werte sind 'undefiniert'. Unten ist mein Code zusammen mit Manifest.Xamarin Formulare Android Anwendung nicht bekommen DeviceToken Parse SDK
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>
Auch einige Male oben genannten Code verursacht Abstürze bei App-Start. Ich habe dieses Problem berichtet here und here
Auch ParseClient.Initialize
ist die erste Zeile von ‚OnCreate‘ Methode der MainActivity wo ich Parse-Schlüssel bin vorbei zur Initialisierung erforderlich.
Ich rufe RegisterForPushNotifications-Methode, nachdem LoadApplication (new App())
aufgerufen wird.
Anbei unten ist der Screenshot der Parse-Installationsklasse.
Bitte lassen Sie mich wissen, ob es einige Problem ist in meinem Code oder ist es das Problem mit Parse-SDK.
Ich denke, Sie sind nicht in dem Emulator ausgeführt wird, nicht wahr? Das Gerät empfängt nur Token in einem physischen Gerät. –
@ iván-oliver Das oben erwähnte Problem betrifft das physische Gerät. – Amrut
Was meinst du manchmal? Das gleiche Gerät? –