Push-уведомление после успешной оплаты для мобильных приложений - PullRequest
0 голосов
/ 23 марта 2019

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

1 Ответ

0 голосов
/ 07 мая 2019

Используйте одного из фоновых работников , если вы хотите проверить состояние вашей транзакции в фоновом режиме. Я буду использовать WorkManager.

implementation "android.arch.work:work-runtime:1.0.1"

public class SynchronizeWorker extends Worker {

    static final String TAG = "MYWORKER";

    public SynchronizeWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }

    private Notification getNotification() {
        NotificationManager mNotificationManager =
                (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel("default",
                    "WTF_CHANNEL",
                    NotificationManager.IMPORTANCE_DEFAULT);
            channel.setDescription("WTF_CHANNEL_DESCRIPTION");
            mNotificationManager.createNotificationChannel(channel);
        }

        // specify the class of the activity you want to open after click on notification

        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(
                getApplicationContext(),
                0,
                intent,
                0);

        return new NotificationCompat.Builder(getApplicationContext(), "default")
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(getApplicationContext().getResources().getString(R.string.notification_header))
                .setContentText(getApplicationContext().getResources().getString(R.string.notification_text))
                .setAutoCancel(true)
                .setWhen(System.currentTimeMillis())
                .setContentIntent(pendingIntent)
                .build();
    }

    @NonNull
    @Override
    public Result doWork() {
        Log.d(TAG, "status checking started");

        // check your transaction status here and show notification
        try {
            TimeUnit.SECONDS.sleep(10);
        } catch (InterruptedException e) {
            Log.d(TAG, "status checking finished");
        }
        Log.d(TAG, "status checking finished");

        NotificationManagerCompat
                .from(getApplicationContext())
                .notify((int)(Math.random() * 10), getNotification());

        return Result.success();
    }
}

А затем поставить работника в очередь, где вы хотите проверить статус

OneTimeWorkRequest myWorkRequest = new OneTimeWorkRequest.Builder(SynchronizeWorker.class).build();
WorkManager.getInstance().enqueue(myWorkRequest);

Я понимаю, что это, вероятно, не совсем то, что вы хотите, но надеюсь, что это поможет как-то:)

...