2015-09-18 2 views
0

Я пытался понять это в течение последних двух часов; Я выполнил все шаги, необходимые для инициализации Push-уведомлений, но не смог получить даже тестовое уведомление.Невозможно получить Push-уведомления в Parse

На панели инструментов моего приложения я вижу класс с именем «Установка», который содержит идентификатор объекта пользователя.

Если я пытаюсь отправить push-уведомление всем устройствам, оно отображается в журнале push, но ничего не регистрируется на устройстве.

Чтобы устранить эту проблему, я попытался удалить и переустановить приложение в эмуляторе, очистить проект, перезапустить студию Android и выполнить регистрацию в качестве другого пользователя (при отправке тестового уведомления другое устройство было зарегистрировано в классе установки). Ничего не сработало. Я прилагаю соответствующий код ниже.

public class MyApplicationName extends Application { 
public static final String TAG = MyApplicationName.class.getSimpleName(); 

@Override 
public void onCreate() { 
    Parse.initialize(this, "-", "-"); 
    ParseInstallation.getCurrentInstallation().saveInBackground(); 
} 

    //To register the installation to each user that logs in 
public static void updateParseInstallation(ParseUser user) { 
    ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
    installation.put(ParseConstants.KEY_USER_ID, user.getObjectId()); 
    installation.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
      if (e!= null) { 
       Log.d(TAG, e.getMessage()); 
      } 
     } 
    }); 
} 

}

public class LoginActivity extends Activity { 

// some code 

    if (e == null) { 
       // login success! 
MyApplicationName.updateParseInstallation(user); 

    // some other code 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_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" /> 

<!-- 
    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="Package.Package1.C2D_MESSAGE" /> 
<uses-permission android:name="Package.Package1.permission.C2D_MESSAGE" /> 





<application 
    android:name=".Application" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 


//other code 


</activity> 

    <service android:name="com.parse.PushService" /> 
    <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" /> 

      <!-- 
       IMPORTANT: Change "com.parse.starter" to match your app's package name. 
      --> 
      <category android:name="Package.Package1" /> 
     </intent-filter> 
    </receiver> 


</application> 

EDIT

я добавил дополнительный код, чтобы получить больше образование, я добавил следующий код, вместе с соответствующим разделом LogCat

public class MyApplicationName extends Application { 
    //code for initializing parse and ParsePush 

    //this static method will run everytime a user logs in 
public static void updateParseInstallation(ParseUser user) { 
    ParseInstallation installation = ParseInstallation.getCurrentInstallation(); 
    installation.put(ParseConstants.KEY_USER_ID, user.getObjectId()); 
    installation.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
      if (e!= null) { 
       Log.d(TAG, e.getMessage()); 

Так как только пользователь войдет в следующий код работает: MyApplicationName.updateParseInstallation (пользователя);

Уведомление толчка, предполагает, чтобы работать каждый раз, когда обнаружен противник:

protected void sendPushNotification() { 
    ParseQuery<ParseInstallation> query = ParseInstallation.getQuery(); 
    query.whereMatches(ParseConstants.KEY_USER_ID, mOpponent.getObjectId()); 
    ParsePush push = new ParsePush(); 
    push.setQuery(query); 
    push.setMessage(getString 
      (R.string.opponent_found_notification, 
        ParseUser.getCurrentUser().getUsername())); 
    push.sendInBackground(new SendCallback() { 
     @Override 
     public void done(ParseException e) { 
      if (e != null) { 
       Log.d(TAG, e.getMessage()); 

Вот интересный раздел LogCat:

09-18 14:32:28.290 2324-2358/com.teamtreehouse.ribbit E/com.parse.ParsePushRouter﹕ Ignoring PPNS push missing timestamp 
09-18 14:41:18.580 8824-8831/Package.Package1/W/art﹕ Suspending all threads took: 10ms 
09-18 14:47:28.500 2324-2358/com.teamtreehouse.ribbit  E/com.parse.ParsePushRouter﹕ Ignoring PPNS push missing timestamp 
09-18 15:01:14.660 1314-1350/system_process W/BatteryStatsImpl﹕ Couldn't get kernel wake lock stats 

Ribbit был применением я практиковал отправку толчок уведомления , прежде чем пытаться нажать на текущее приложение. Я не понимаю, почему это приложение появляется в журнале, но я подозреваю, что причина в том, что push-уведомления не работают. Я попробовал очистить свой браузер, перезапустив студию андроида, но я получаю то же сообщение в лог-коте. Может кто-то пожалуйста, пожалуйста, помогите мне здесь? Я прикрепил весь лог-кот ниже, если кто-то может быть заинтересован.

09-18 14:32:28.140 1314-1314/system_process I/ActivityManager﹕ Killing  2301:com.android.exchange/u0a27 (adj 11): empty for 1800s 
09-18 14:32:28.150 1314-1314/system_process I/ActivityManager﹕ Killing 2244:com.android.settings/1000 (adj 13): empty for 1804s 
09-18 14:32:28.160 1314-1314/system_process I/ActivityManager﹕ Killing 2142:com.android.managedprovisioning/u0a8 (adj 13): empty for 1807s 
09-18 14:32:28.170 1314-1314/system_process I/ActivityManager﹕ Killing 2114:com.android.dialer/u0a4 (adj 13): empty for 1807s 
09-18 14:32:28.180 1314-1314/system_process I/ActivityManager﹕ Killing 1870:com.android.defcontainer/u0a3 (adj 13): empty for 1808s 
09-18 14:32:28.190 1314-1314/system_process I/ActivityManager﹕ Killing 2004:com.android.music/u0a33 (adj 13): empty for 1812s 
09-18 14:32:28.290 2324-2358/com.teamtreehouse.ribbit E/com.parse.ParsePushRouter﹕ Ignoring PPNS push missing timestamp 
09-18 14:41:18.580 8824-8831/Package.Package1/W/art﹕ Suspending all threads took: 10ms 
09-18 14:47:28.500 2324-2358/com.teamtreehouse.ribbit  E/com.parse.ParsePushRouter﹕ Ignoring PPNS push missing timestamp 
09-18 15:01:14.660 1314-1350/system_process W/BatteryStatsImpl﹕ Couldn't get kernel wake lock stats 
09-18 15:02:00.030 1314-1340/system_process I/ProcessStatsService﹕ Prepared write state in 0ms 
09-18 15:02:40.080 1314-1314/system_process V/BackupManagerService﹕ Running a backup pass 
09-18 15:02:40.100 1314-1458/system_process V/PerformBackupTask﹕ Beginning backup of 7 targets 
09-18 15:02:40.120 1556-1841/com.android.inputmethod.latin I/LatinIME:LogUtils﹕ Dictionary info: dictionary = UserHistoryDictionary.en_US ; version = 1441827702 ; date = 1442613760 
09-18 15:02:40.160 1314-1458/system_process D/PerformBackupTask﹕ invokeAgentForBackup on @[email protected] 
09-18 15:02:40.160 1314-1458/system_process V/BackupServiceBinder﹕ doBackup() invoked 
09-18 15:02:40.180 2324-2358/com.teamtreehouse.ribbit E/com.parse.ParsePushRouter﹕ Ignoring PPNS push missing timestamp 
09-18 15:02:40.200 1314-1458/system_process I/BackupRestoreController﹕ Getting widget state for user: 0 
09-18 15:02:40.200 1314-1458/system_process I/PerformBackupTask﹕ no backup data written; not calling transport 
09-18 15:02:40.200 1314-1458/system_process D/PerformBackupTask﹕ starting agent for backup of BackupRequest{pkg=com.android.dialer} 

09-18 15: 02: 40,220 1314-1458/system_process I/ActivityManager: Начало ргос 27097: com.android.dialer/u0a4 для резервного копирования com.android.dialer/.DialerBackupAgent 09-18 15 : 02: 40.220 1314-1458/system_process D/BackupManagerService: ожидающий агент для ApplicationInfo {527c6ec com.android.dialer} 09-18 15: 02: 40.230 27097-27097 /? D/ExtensionsFactory: никаких пользовательских расширений.

ответ

0

Посмотрите на this вопрос. Это вопрос, который я написал. Скопируйте код, который я использую там из вопроса, и следуйте инструкциям на принятом ответе (также я).

ParseApplication.java:

package your.package.name; 

public class ParseApplication extends Application { 

    @Override 
    public void onCreate() { 
     Parse.initialize(this, "", ""); 
    } 
} 
+0

Я посмотрел на свой ответ, и я уже принял те же самые шаги, которые вы сделали, но безрезультатно. – Frosty619

+0

Здравствуйте, посмотрите на редактирование, я предоставил новую информацию. – Frosty619

Смежные вопросы