2015-09-17 6 views
40

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.

parse installation

Bitte lassen Sie mich wissen, ob es einige Problem ist in meinem Code oder ist es das Problem mit Parse-SDK.

+0

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. –

+0

@ iván-oliver Das oben erwähnte Problem betrifft das physische Gerät. – Amrut

+0

Was meinst du manchmal? Das gleiche Gerät? –

Antwort

1

Wenn Sie die Push-Benachrichtigung mit Xamarin deklarieren, dann müssen Sie Code auf beiden Abschnitt wie Xamarin Android und IOS schreiben, und auch wenn Sie Remote-Benachrichtigung verwendet haben, dann Sharp lib zu verwenden, die für Push-Benachrichtigung am besten ist und registrieren Sie Ihre App und aktivieren Sie den Benachrichtigungsdienst wie GCM und APSN relevant für Android und IOS.

Plese versuchen Sie dies: https://github.com/rdelrosario/xamarin-plugins/tree/master/PushNotification/PushNotification

Verwandte Themen