Project

General

Profile

Download (3 KB) Statistics
| Branch: | Revision:

sokoban / distorted-sokoban / src / main / java / org / distorted / messaging / SokobanMessagingService.java @ cab1d9c1

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2022 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9

    
10
package org.distorted.messaging;
11

    
12
import android.content.Context;
13
import android.util.Log;
14

    
15
import androidx.annotation.NonNull;
16

    
17
import androidx.work.OneTimeWorkRequest;
18
import androidx.work.WorkManager;
19
import androidx.work.Worker;
20
import androidx.work.WorkerParameters;
21

    
22
import com.google.firebase.messaging.FirebaseMessagingService;
23
import com.google.firebase.messaging.RemoteMessage;
24

    
25
///////////////////////////////////////////////////////////////////////////////////////////////////
26

    
27
public class SokobanMessagingService extends FirebaseMessagingService
28
{
29
  private static final String TAG = "RubikMessagingService";
30

    
31
  public static class RubikWorker extends Worker
32
    {
33
    public RubikWorker(@NonNull Context context, @NonNull WorkerParameters workerParams)
34
      {
35
      super(context, workerParams);
36
      }
37

    
38
    @NonNull
39
    @Override
40
    public Result doWork()
41
      {
42
      return Result.success();
43
      }
44
    }
45

    
46
///////////////////////////////////////////////////////////////////////////////////////////////////
47

    
48
  @Override
49
  public void onMessageReceived(RemoteMessage remoteMessage)
50
    {
51
    Log.e(TAG, "From: " + remoteMessage.getFrom());
52

    
53
    if (remoteMessage.getData().size() > 0)
54
      {
55
      Log.e(TAG, "Message data payload: " + remoteMessage.getData());
56

    
57
      if (/* Check if data needs to be processed by long running job */ true)
58
        {
59
        scheduleJob();
60
        }
61
      else
62
        {
63
        handleNow();
64
        }
65
      }
66

    
67
    if (remoteMessage.getNotification() != null)
68
      {
69
      Log.e(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
70
      }
71
    }
72

    
73
///////////////////////////////////////////////////////////////////////////////////////////////////
74

    
75
  @Override
76
  public void onNewToken(@NonNull String token)
77
    {
78
    // TODO: send to my server
79
    }
80

    
81
///////////////////////////////////////////////////////////////////////////////////////////////////
82

    
83
  private void scheduleJob()
84
    {
85
    OneTimeWorkRequest work = new OneTimeWorkRequest.Builder(RubikWorker.class).build();
86
    WorkManager.getInstance(this).beginWith(work).enqueue();
87
    }
88

    
89
///////////////////////////////////////////////////////////////////////////////////////////////////
90

    
91
  private void handleNow()
92
    {
93

    
94
    }
95
}
(2-2/2)