2015-09-17 11 views
40

Zajmuję się tworzeniem aplikacji formularzy Xamarin dla systemów Android i iOS. Wdrażam PushNotifications dla tego samego przy użyciu Parse SDK. Dodałem Parse.Android dll w odnośnikach projektu .Droid i Parse.iOS dll w referencjach do projektu .iOS. Moim problemem jest czasem na Androidzie, nie jestem w stanie odzyskać DeviceToken. W klasie instalacji parsowania nie ma wpisów dla DeviceToken i pushtype. Jego wartości są "niezdefiniowane". Poniżej znajduje się mój kod wraz z manifestem.Formularze Xamarin dla systemu Android Aplikacja nie uzyskiwanie parametru DeviceToken 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> 

Również kilka razy wyżej wymieniony kod jest powodujące wypadki przy starcie aplikacji. I już zgłaszane ten problem here i here

także ParseClient.Initialize to pierwsza linia „” OnCreate metody główną działalność, gdzie jestem przechodzącej klucze analizowania wymagane do inicjalizacji.

Dzwonię do metody RegisterForPushNotifications po wywołaniu LoadApplication (new App()).

Poniżej znajduje się zrzut ekranu klasy instalacji parse.

parse installation

Proszę dać mi znać, jeśli istnieje jakiś problem w moim kodu, czy jest to problem z parsowania SDK.

+0

Chyba jesteś nie działa w emulatorze, prawda? Urządzenie otrzymuje tylko token w urządzeniu fizycznym. –

+0

@ iván-oliver Powyższy problem dotyczy urządzenia fizycznego. – Amrut

+0

Co masz na myśli przez czasami? To samo urządzenie? –

Odpowiedz

1

Po zadeklarowaniu powiadomienia push przy użyciu xamarin, musisz napisać kod w obu sekcjach, takich jak Android Xamarin i IOS, a także, jeśli korzystasz z zdalnego powiadomienia, użyj, aby przesłać ostrą bibliotekę, która najlepiej nadaje się do powiadomienia push i zarejestruj swoją aplikację i włącz usługę powiadamiania, taką jak GCM i APSN, dostosowaną do Androida i IOS.

Plese spróbuj tego: https://github.com/rdelrosario/xamarin-plugins/tree/master/PushNotification/PushNotification

Powiązane problemy