2015-09-09 63 views
4

您好已經解析保存數據。但通知是我堅持的東西。我無法弄清楚發生了什麼問題。OUTDATED DEVICE:解析推送通知到Android設備

我已經完成了所有的接收器註冊,因此我的設備也在安裝表中註冊,但在從Web控制檯發送推送時,它會顯示「推送0」,查看每次推送的描述,顯示「OUTDATED DEVICE - 此安裝中的記錄已過時,用戶可能已卸載該應用程序。「但我只是做了註冊。

我要瘋了這... ...什麼我做錯了不知道,我使用的Eclipse IDE,任何人都可以請建議我任何解決方案? enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.parsecomlogin" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

    <permission 
     android:name="com.example.parsecomlogin.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.example.parsecomlogin.permission.C2D_MESSAGE" /> 

    <permission 
     android:name="com.example.parsecomlogin.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.example.parsecomlogin.permission.MAPS_RECEIVE" /> 

    <uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="21" /> 

    <application 
     android:name=".ParseApp" 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <!-- Added for Parse push notifications --> 
     <!-- My custom receiver --> 
     <receiver 
      android:name=".ParseReceiver" 
      android:enabled="true" 
      android:exported="false" > 
      <intent-filter> 
       <action android:name="com.example.parsecomlogin.RECEIVE_PUSH" /> 
      </intent-filter> 
     </receiver> 
     <!-- END my custom receiver --> 
     <service android:name="com.parse.PushService" /> 

     <receiver android:name="com.parse.ParseBroadcastReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
       <action android:name="android.intent.action.USER_PRESENT" /> 
      </intent-filter> 
     </receiver> 
     <receiver 
      android:name="com.parse.ParsePushBroadcastReceiver" 
      android:exported="false" > 
      <intent-filter> 
       <action android:name="com.parse.push.intent.RECEIVE" /> 
       <action android:name="com.parse.push.intent.DELETE" /> 
       <action android:name="com.parse.push.intent.OPEN" /> 
      </intent-filter> 
     </receiver> 
     <receiver 
      android:name="com.parse.GcmBroadcastReceiver" 
      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.example.parsecomlogin" /> 
      </intent-filter> 
     </receiver> 

     <activity 
      android:name=".Welcome" 
      android:label="@string/title_activity_welcome" > 
     </activity> 
     <activity 
      android:name=".LoginActivity" 
      android:label="@string/title_login" > 
     </activity> 
     <activity 
      android:name=".LoginSignupActivity" 
      android:label="@string/title_activity_login_signup" > 
     </activity> 

     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyDZ5TG28QJnN5zMyIdezPllvrfrwg7ElQs" /> 
    </application> 

</manifest> 
+0

我認爲PPNS - 過期的設備顯示,無論是用戶再次卸載應用程序或用戶註冊在應用程序清除應用程序的數據後,讓新的條目填充在解析安裝表中的應用程序造成秒脈衝過期的計數顯示爲設備應用。 – ved

+0

是的,我所做的完全一樣的事情,但是,這是什麼解決方案,因爲我不能經常更換設備。我的意思是有什麼方法可以清理並重試 – Prithvi

+0

每次清除應用程序的數據並重新註冊時,都會在ParseInstallation表中創建新條目。現在通知將發送到這個新創建的條目,舊條目顯示了我的情況下PPNS-OUTDATED DEVICE。在你的情況下,在清除數據後卸載/再次註冊後,在安裝表中創建新條目。 – ved

回答

2

我面對完全一樣的問題,我固定它幾分鐘前的巧合。我希望這個問題也可以通過同樣的修改來解決。

在我的情況,我用我的工作較舊的項目之一,我已經在某種程度上手動更改清單包名稱。在AndroidManifest.xml文件中,清單包名稱已更改爲「com.myprojectname」。沒有任何問題,應用程序可以在沒有任何錯誤的情況下運行此包名稱。此外,除推送通知服務外,所有Parse功能都可以無問題地運行。然後我用Ctrl + Shift + R檢查其他路徑,並搜索R.java是否使用相同的名稱。不出所料,這個文件中的包名是相同的,但我意識到在R.java下面的行中使用「net.myprojectname.app」而不是「com.myprojectname」的模式。我通過再次使用Ctrl + Shift + R將「com.myprojectname」替換爲所有文件中的「net.myprojectname.app」。我認爲這不是問題的原因,但我試圖絕望地發送最後推送通知。這很難相信,但它的工作。畢竟,我通知成功了。

我回答了這個問題的高度非正式和非技術的方式,但我不知道的根本原因的想法,我只是想幫助。也許它適合你。祝你好運。

+0

您可以詳細說明或添加屏幕截圖,您如何解決問題? – Prithvi

+1

我認爲當我手動更改包名時,在構建時生成的一些文件(或者開發人員不應直接更改的文件)保留了舊名稱。因此,存在不兼容性。爲了學習正確的名稱,我打開R.java並在註釋行中搜索以「@link」開頭的模式。在一些結果中,我看到我的舊軟件包名稱是「net.myprojectname.app」。然後,通過按Ctrl + Shift + R(對於AndroidStudio),打開「替換路徑」並更改所有「com」。myprojectname「與」net.myprojectname.app「有趣的是,它的工作 –

+0

我不這麼認爲,我可以通過詳細解釋一些截圖來解釋它,僅僅從R.java中找到舊的包路徑並且改變了所有的新路徑如果我是你,我不會忘記備份我的項目,然後嘗試它,或者,你可以創建一個新的項目並將你的文件複製到這個項目中。順便說一句,還可以嘗試刪除舊測試設備的安裝在解析核心 –