2015-11-13 76 views
0

我想使用Parse推送通知。當我在Android模擬器上測試應用程序時,發現一些設備有一些設備沒有deviceToken。如果沒有deviceToken,則此設備無法接收通知。我該如何解決這個問題?以下是我的代碼。使用Parse通知安裝Android設備時沒有設備令牌

public class ShooksApplication extends Application { 

public void onCreate() { 
    super.onCreate(); 

    Parse.initialize(this, "***********", "*******************"); 
    ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 

    installation.saveInBackground(); 
} 
} 

而清單正在工作,因爲具有deviceToken的設備可以接收通知。但是我看到安裝中所有數據的pushType是gcm。 下面是我的清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.cs442.project.team13" > 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<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" /> 

<!-- 
    IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below 
    to match your app's package name + ".permission.C2D_MESSAGE". 
--> 
<permission android:protectionLevel="signature" 
    android:name="com.cs442.project.team13.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.cs442.project.team13.permission.C2D_MESSAGE" /> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:name=".ShooksApplication"> 
    <activity 
     android:name="com.cs442.project.team13.MainPage" 
     android:label="Search" 
     android:theme="@style/Theme.MyCompatTheme"> 

     <meta-data 
      android:name="android.app.default_searchable" 
      android:value=".SearchBookResultsActivity" /> 
    </activity> 

    <activity 
     android:name="com.cs442.project.team13.SearchBookResultsActivity" 
     android:label="SearchResult" 
     android:theme="@style/Theme.MyCompatTheme"> 

     <!-- to identify this activity as "searchable" --> 
     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.app.default_searchable" 
      android:value="com.example.ExampleActivity" /> 
     <meta-data 
      android:name="android.app.searchable" 
      android:resource="@xml/searchable" /> 
    </activity> 

    <activity android:name="com.cs442.project.team13.WishListResult" 
       android:label="Wishlist"/> 
    <activity android:name="com.cs442.project.team13.Details" 
     android:label="Details"/> 








    <activity 
     android:name="com.cs442.project.team13.LoginActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.cs442.project.team13.UpdateProfile" /> 

    <activity android:name="com.cs442.project.team13.RegisterActivity" /> 
    <activity 
     android:name="com.cs442.project.team13.BookCategoryActivity" 
     android:label="@string/title_activity_book_category" > 
    </activity> 
    <activity 
     android:name="com.cs442.project.team13.PostBookActivity" 
     android:label="@string/title_activity_post_book" > 
    </activity> 
    <activity 
     android:name="com.cs442.project.team13.DisplayBookInfoActivity" 
     android:label="@string/title_activity_display_book_info" > 
    </activity> 
    <activity 
     android:name="com.cs442.project.team13.DisplayProviderInfoActivity" 
     android:label="@string/title_activity_display_provider_info" > 
    </activity> 
    <activity 
     android:name="com.cs442.project.team13.DisplayUserBookListActivity" 
     android:label="@string/title_activity_display_user_book_list" > 
    </activity> 
    <activity 
     android:name="com.cs442.project.team13.UpdateBookInfoActivity" 
     android:label="@string/title_activity_update_book_info" > 
    </activity> 
    <activity 
     android:name="com.cs442.project.team13.CategorySearch" 
     android:label="@string/title_activity_category_search" > 
    </activity> 

    <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.cs442.project.team13" /> 
     </intent-filter> 
    </receiver> 

    <meta-data android:name="com.parse.push.notification_icon" android:resource="@drawable/book126"/> 
</application> 

我怎樣才能解決這個問題呢?

+0

你有沒有設置到一切,如:接收機和服務清單?安裝應該顯示gcm,這不是問題。 – V01D1

+0

嗨,謝謝你的回覆,是的,我在我的清單中設置了接收器和服務,但問題是安裝了設備令牌的一些設備可以接收通知,但由於缺少設備令牌而無法接收,我不知道爲什麼。 – Chen

+0

你能編輯你的文章幷包含Manifest文件嗎? – V01D1

回答

0

從我可以在你的清單看到的唯一的解決辦法是消除

<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> 
+0

嗨,謝謝你的回覆,我刪除了這部分,我發現有趣的是,devicetoken是當我第一次運行時就是空的,我需要從移動歷史記錄中刪除它,然後重新運行它,然後顯示設備令牌,爲什麼會發生這種情況?你有什麼主意嗎? – Chen