Получить счетчик уведомлений OneSignal - PullRequest
1 голос
/ 12 июня 2019

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

Я использую реализацию 'com.nex3z: значок уведомления: 1.0.2' , чтобы показать свои значки:

final NotificationBadge badge = findViewById(R.id.badge);
badge.setNumber(NUMBER_NOTIFICATION);

В другой ситуации я использую этот класс, чтобы выполнить действие click для уведомления:

public class NotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
        private AppCompatActivity application;
        Pessoa pessoa;

        public NotificationOpenedHandler(AppCompatActivity application){
            this.application = application;
        }

        @Override
        public void notificationOpened(OSNotificationOpenResult result) {
            pessoa = SharedPrefs.GetPessoa(application);

            //Pegar a ação de click do usuário na notificação
            OSNotificationAction.ActionType actionType = result.action.type;
            //Pegar conteudo adicional do push enviado
            JSONObject data = result.notification.payload.additionalData;

            //Verifica se o USUÁRIO clicou nos botões da notificação enviada
            if (actionType == OSNotificationAction.ActionType.ActionTaken || actionType == OSNotificationAction.ActionType.Opened) {
                Log.i("OneSignalExample", "Button pressed with id: " + result.action.actionID);

                //É feita a verificação se existe additionalData naquela notificação
                if (data != null && data.length() != 0) {
                    if (actionType.equals(OSNotificationAction.ActionType.ActionTaken)) {
                        //Verifica se o botao da notificação clicado foi o com o nome "VER PUBLICAÇÃO"
                        if (result.action.actionID.equals("VIEW_IDENTIFIER")) {
                            DataOneSignal dataMap = new DataOneSignal();
                            Type type = new TypeToken<DataOneSignal>() {
                            }.getType();
                            dataMap = (DataOneSignal) new GsonBuilder().create().fromJson(String.valueOf(data), type);



                            switch (dataMap.getTipo()) {
                                //Caso a notificação seja para o PERFIL do USUÁRIO
                                case 0:
                                    Intent intentCase0 = new Intent(application, PerfilActivity.class)
                                            .setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                                    intentCase0.putExtra("IdentificadorTarget", dataMap.getConteudo());
                                    intentCase0.putExtra("IdentificadorSelf",  this.pessoa.getIdentificador());
                                    application.startActivity(intentCase0);
                                    break;
                                //Caso a solicitação seja para o CHAT
                                case 1:
                                    Intent intentCase1 = new Intent(application, Chat_Activity.class)
                                            .setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                                    intentCase1.putExtra("IdentificadorTarget", dataMap.getConteudo());
                                    intentCase1.putExtra("IdentificadorSelf",  this.pessoa.getIdentificador());
                                    application.startActivity(intentCase1);
                                    break;
                                //Recusado (provavelmente não vai usar)
                                case 2:
                                    Intent intentCase2 = new Intent(application, ContatosActivity.class)
                                            .setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                                    application.startActivity(intentCase2);
                                    break;
                                //Caso a notificação seja para o FÓRUM
                                case 3:
                                    Intent intentCase3 = new Intent(application, DetalheTopico_Activity.class)
                                            .setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                                    intentCase3.putExtra("TopicoId", dataMap.getConteudo());
                                    application.startActivity(intentCase3);
                                    break;
                                default:
                                    Toast.makeText(getApplicationContext(), "Não foi possível encontrar a sessão.", Toast.LENGTH_LONG).show();
                                    break;
                            }

                        }
                    }
                }
            } else {
                final CustomDialogClass cdd = new CustomDialogClass(application);
                cdd.setTitulo_txt("Fechar o aplicativo?");
                cdd.setPositiveButton("Sim", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        cdd.dismiss();
                    }
                });
                cdd.setNegativeButton("Não", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        cdd.dismiss();
                    }
                });
                cdd.show();
            }
        }
    }

1 Ответ

1 голос
/ 14 июня 2019

Счетчик значков автоматически управляется SDK OneSignal.Однако, если вы хотите управлять ими самостоятельно, смело обращайтесь к нашему гиду .

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

...