导航菜单

页面标题

页面副标题

Vesuvius v228 - FirebaseNotificationsService.java 源代码

正在查看: Vesuvius v228 应用的 FirebaseNotificationsService.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package anywheresoftware.b4a.objects;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.os.Parcelable;
import anywheresoftware.b4a.AbsObjectWrapper;
import anywheresoftware.b4a.BA;
import anywheresoftware.b4a.keywords.Common;
import anywheresoftware.b4a.objects.collections.Map;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import java.util.Map;

public class FirebaseNotificationsService extends FirebaseMessagingService {
    private static Class<?> ReceiverClass = null;
    private static Class<?> ServiceClass = null;
    private static boolean firstMessage = true;
    private static Handler handler;

    public void onCreate() {
        super.onCreate();
        try {
            handler = new Handler(Looper.getMainLooper());
            Class<?> cls = Class.forName(String.valueOf(getPackageName()) + ".firebasemessaging");
            ServiceClass = cls;
            if (BroadcastReceiver.class.isAssignableFrom(cls)) {
                ReceiverClass = ServiceClass;
            } else {
                ReceiverClass = Class.forName(String.valueOf(getPackageName()) + ".firebasemessaging$firebasemessaging_BR");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            BA.LogError("FirebaseMessaging not found.");
        }
    }

    public static Intent createIntent(Service service, String str) {
        Intent intent = new Intent(service, ReceiverClass);
        intent.setAction("b4a_firebasemessaging");
        intent.putExtra("event", str);
        return intent;
    }

    public void onNewToken(String str) {
        sendBroadcast(createIntent(this, "b4a_tokenrefresh"));
    }

    public void onMessageReceived(final RemoteMessage remoteMessage) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                final Intent createIntent = FirebaseNotificationsService.createIntent(FirebaseNotificationsService.this, "b4a_messagereceived");
                createIntent.putExtra("message", (Parcelable) remoteMessage);
                try {
                    if (!FirebaseNotificationsService.firstMessage && Common.IsPaused(null, FirebaseNotificationsService.ServiceClass)) {
                        BA.handler.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                FirebaseNotificationsService.this.sendBroadcast(createIntent);
                            }
                        }, 500L);
                        return;
                    }
                    FirebaseNotificationsService.firstMessage = false;
                    FirebaseNotificationsService.this.sendBroadcast(createIntent);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        });
    }

    @BA.Version(3.1f)
    @BA.ShortName("FirebaseMessaging")
    public static class FirebaseMessageWrapper extends AbsObjectWrapper<FirebaseMessaging> {
        private BA ba;
        private String eventName;
        private String token = "";

        public void Initialize(BA ba, String str) {
            setObject(FirebaseMessaging.getInstance());
            this.ba = ba;
            this.eventName = str.toLowerCase(BA.cul);
            updateToken();
        }

        private void updateToken() {
            FirebaseMessaging.getInstance().getToken().addOnSuccessListener(new OnSuccessListener<String>() {
                public void onSuccess(String str) {
                    FirebaseMessageWrapper.this.token = str;
                    FirebaseMessageWrapper.this.ba.raiseEventFromUI(this, String.valueOf(FirebaseMessageWrapper.this.eventName) + "_tokenrefresh", FirebaseMessageWrapper.this.token);
                }
            });
        }

        public boolean HandleIntent(Intent intent) {
            if (intent == null || !"b4a_firebasemessaging".equals(intent.getAction())) {
                return false;
            }
            intent.setExtrasClassLoader(RemoteMessage.class.getClassLoader());
            String stringExtra = intent.getStringExtra("event");
            if (stringExtra.equals("b4a_tokenrefresh")) {
                updateToken();
            } else if (stringExtra.equals("b4a_messagereceived")) {
                RemoteMessage parcelableExtra = intent.getParcelableExtra("message");
                this.ba.raiseEventFromUI(this, String.valueOf(this.eventName) + "_messagearrived", AbsObjectWrapper.ConvertToWrapper(new RemoteMessageWrapper(), parcelableExtra));
            }
            return true;
        }

        public String getToken() {
            return BA.returnString(this.token);
        }

        public void SubscribeToTopic(String str) {
            getObject().subscribeToTopic(str);
        }

        public void UnsubscribeFromTopic(String str) {
            getObject().unsubscribeFromTopic(str);
        }
    }

    @BA.ShortName("RemoteMessage")
    public static class RemoteMessageWrapper extends AbsObjectWrapper<RemoteMessage> {
        public String getCollapseKey() {
            return BA.returnString(getObject().getCollapseKey());
        }

        public String getFrom() {
            return BA.returnString(getObject().getFrom());
        }

        public String getMessageId() {
            return getObject().getMessageId();
        }

        public long getSentTime() {
            return getObject().getSentTime();
        }

        public Map GetData() {
            Map map = new Map();
            map.Initialize();
            if (getObject().getData() != null) {
                for (Map.Entry entry : getObject().getData().entrySet()) {
                    map.Put(entry.getKey(), entry.getValue());
                }
            }
            return map;
        }
    }
}