2015-09-17 11 views
40

私はアンドロイドとiOSの両方に対してxamarinフォームアプリケーションを開発しています。私はParse SDKを使用して同じもののPushNotificationsを実装しています。私は.DroidプロジェクトとParse.iOS dllの参考文献にParse.Android dllを追加しました。私の問題は時々Androidにあります。私はDeviceTokenを取得できません。パースインストールクラスにDeviceTokenとpushtypeのエントリはありません。値は 'undefined'です。以下は私のコードとマニフェストです。Xamarin formsアンドロイドアプリケーションが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> 

も言及コード上記一部の時間は、アプリケーションの起動時にクラッシュを引き起こしています。私はこの問題を報告しましたherehere

​​3210は、初期化に必要な解析キーを渡しているMainActivityの 'OnCreate'メソッドの最初の行です。

LoadApplication (new App())が呼び出された後、私はRegisterForPushNotificationsメソッドを呼び出しています。

以下に、パースインストールクラスのスクリーンショットを示します。

parse installation

が私のコードでは、いくつかの問題ですか、それはパースSDKの問題である場合は私に知らせてください。

+0

あなたはエミュレータで動作していないと思いますか?デバイスは、物理デバイス内のトークンのみを受信します。 –

+0

@iván-oliver上記の問題は物理デバイス上にあります。 – Amrut

+0

時々あなたはどういう意味ですか?同じデバイスですか? –

答えて

1

xamarinを使用してプッシュ通知を宣言すると、xamarin androidやIOSなどの両方のセクションにコードを記述する必要があります。また、リモート通知に使用していた場合はプッシュ通知に最適なシャープなlibアプリを登録し、GCMやAPSNなどの通知サービスをAndroidやIOSに関連するサービスにすることができます。

これを試してください:https://github.com/rdelrosario/xamarin-plugins/tree/master/PushNotification/PushNotification

関連する問題