0

Я использую сервисы Google Play для создания достижений для игры в андроид.Интеграция достижений Google Play и андроидных уведомлений

Цель: В моем onAchievmentUnlocked обратном вызове Я хочу отправить уведомление на устройство, которое открывает экран достижения, когда пользователь касается уведомления (от везде, где они есть).

Что работает:

  • Уведомление отправляется правильно и все иконки и т.д. видны. Прикосновение к notificatoin ничего не делает.
  • Достижению активность делает работу, так как у меня есть пункт Option Menu для вызова его в приложении с помощью этого кода: activity.startActivityForResult(gameClient.getAchievementsIntent(), ACHIEVEMENTS_ID);

Что не работает: Прикосновение уведомления не имеет никакого видимого эффекта.

Примечания:

  • MinSDKVersion является 14
  • TargetSDKVersion является 16

Вот код, у меня есть на данный момент:

@Override 
public void onAchievementUnlocked(final String id) { 
    final Achievement ac = mAchievementManager.getUnlockedAchievements().get(id); 
    assert(ac!=null); 
    Uri uri = ac.getUnlockedImageUri(); 
    final Context ctx = this; 
    ImageManager.OnImageLoadedListener listener = new ImageManager.OnImageLoadedListener() { 
     @Override 
     public void onImageLoaded(Uri uri, Drawable drawable) { 
      Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap(); 
      Notification.Builder builder = new Notification.Builder(ctx) 
        .setContentTitle(APP_TITLE_STRING) 
        .setContentText(ac.getName() + " achievement unlocked") 
        .setLargeIcon(bitmap) 
        .setSmallIcon(R.drawable.ic_trophy); 
       Intent intent = mLoginFragment.getGamesClient().getAchievementsIntent(); 
       PendingIntent pIntent = PendingIntent.getActivity(ctx, AchievementManager.REQUEST_ACHIEVEMENTS, intent, Intent.FLAG_ACTIVITY_NEW_TASK); 
       builder.setContentIntent(pIntent); 
      Notification note; 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) note = builder.build(); 
      else note = builder.getNotification(); 
      NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
      mNotificationManager.notify(1, note); 
     } 
    }; 
    mImageManager.loadImage(listener,uri,R.drawable.ic_trophy); 
} 

ответ

0

Используйте этот код здесь:

Games.Achievements.incrementImmediate(GoogleApiClient apiClient, String id, int numSteps) 
.setResultCallback(new ResultCallback<Achievements.UpdateAchievementResult>() { 

     @Override 
     public void onResult(UpdateAchievementResult result) { 
      switch (result.getStatus().getStatusCode()) { 
      case GamesStatusCodes.STATUS_ACHIEVEMENT_UNLOCKED: 
       // the state of the achievement is STATE_UNLOCKED after an increment operation. Continuing to increment an already unlocked achievement will always return this status. 
       break; 
      case GamesStatusCodes.STATUS_ACHIEVEMENT_UNKNOWN: 
       // the achievement failed to update because could not find the achievement to update. 
       break; 
      case GamesStatusCodes.STATUS_ACHIEVEMENT_NOT_INCREMENTAL: 
       // achievement failed to increment since it is not an incremental achievement. 
       break; 
      case GamesStatusCodes.STATUS_ACHIEVEMENT_UNLOCK_FAILURE: 
       // the call to unlock achievement failed. 
       break; 
      } 
     } 

    }); 

Этот код увеличит достижение по количеству шагов, которые вы хотите, а затем вызовет onResult, чтобы увидеть статус вашего достижения, которое было увеличено.

Ссылка на дополнительную информацию о статусе: https://developer.android.com/reference/com/google/android/gms/games/achievement/Achievements.UpdateAchievementResult.html

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

  • Нет связанных вопросов^_^