2015-09-17 17 views
40

Sto sviluppando un'applicazione per moduli xamarin sia per Android che per iOS. Sto implementando PushNotifications per lo stesso utilizzando Parse SDK. Ho aggiunto Parse.Android dll nei riferimenti di .Droid project e Parse.iOS dll nei riferimenti del progetto .iOS. Il mio problema è a volte su Android Non riesco a recuperare il DeviceToken. Non ci sono voci per DeviceToken e pushtype nella classe di installazione parse. I suoi valori sono "indefiniti". Di seguito è riportato il mio codice insieme a manifest.Xamarin forma l'applicazione Android non ricevendo 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> 

anche alcune volte sopra codice di cui è causa di crash all'avvio app. Ho segnalato questo problema here e here

anche ParseClient.Initialize è la prima linea di metodo 'OnCreate' di MainActivity dove sto passando le chiavi parse necessarie per l'inizializzazione.

Sto chiamando il metodo RegisterForPushNotifications dopo LoadApplication (new App()).

In allegato è riportato lo screenshot della classe di installazione di parse.

parse installation

Per favore fatemi sapere se c'è qualche problema nel mio codice o è la questione con SDK parse.

+0

Immagino che tu non sei in esecuzione nell'emulatore, giusto? Il dispositivo riceve solo token in un dispositivo fisico. –

+0

@ iván-oliver Il problema sopra riportato riguarda il dispositivo fisico. – Amrut

+0

Cosa intendi a volte? Lo stesso dispositivo? –

risposta

1

quando si dichiara la notifica push utilizzando xamarin, quindi è necessario scrivere codice su entrambe le sezioni come xamarin android e IOS, e anche se si è abituati alla notifica remota quindi utilizzare per spingere la lib forte che è il migliore per la notifica push e registra la tua app e abilita il servizio di notifica come GCM e APSN rilevanti per Android e IOS.

Plese provare questo: https://github.com/rdelrosario/xamarin-plugins/tree/master/PushNotification/PushNotification