Project

General

Profile

Download (3.09 KB) Statistics
| Branch: | Tag: | Revision:

magiccube / src / main / java / org / distorted / messaging / RubikMessagingService.java @ 8feb68c2

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
import org.distorted.external.RubikNetwork;
26

    
27
///////////////////////////////////////////////////////////////////////////////////////////////////
28

    
29
public class RubikMessagingService extends FirebaseMessagingService
30
{
31
  private static final String TAG = "RubikMessagingService";
32

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

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

    
48
///////////////////////////////////////////////////////////////////////////////////////////////////
49

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

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

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

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

    
75
///////////////////////////////////////////////////////////////////////////////////////////////////
76

    
77
  @Override
78
  public void onNewToken(@NonNull String token)
79
    {
80
    RubikNetwork network = RubikNetwork.getInstance();
81
    network.token(token);
82
    }
83

    
84
///////////////////////////////////////////////////////////////////////////////////////////////////
85

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

    
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93

    
94
  private void handleNow()
95
    {
96

    
97
    }
98
}
(2-2/2)