如何从 FirebaseMessagingService 的 onNewToken() 访问我的布局?

Posted

技术标签:

【中文标题】如何从 FirebaseMessagingService 的 onNewToken() 访问我的布局?【英文标题】:How to access my layout from onNewToken() of FirebaseMessagingService? 【发布时间】:2022-01-22 12:13:28 【问题描述】:

首先,我是 android 开发的一个很棒的新手(而且英语不是很完美)。

从 FirebaseMessagingService 类的 onNewToken() 方法访问我的布局(简单的 TextView,这里命名为“文本”)的最简单方法是什么? 我看到我们经常谈论广播接收器,但我也读到它已被弃用。 当然我的 findViewById() 有错误。

public class MyFirebaseMessagingService extends FirebaseMessagingService 
    @Override
    public void onNewToken(String device_token) 
        @SuppressLint("HardwareIds") String device_id = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
        DeviceService service = DeviceService.retrofit.create(DeviceService.class);
        Call<String> call = service.insertToken(device_token,device_id);
        call.enqueue(new Callback<String>() 
            @Override
            public void onResponse(Call<String> call, Response<String> response) 
                if (response.isSuccessful()) 
                    text.setText("Token registered");
                   else 
                    text.setText("Token registering error");
                
            
            @Override
            public void onFailure(Call<String> call, Throwable t) 
                text.setText("Token not transmitted");
            
        );
    

【问题讨论】:

【参考方案1】:

BroadcastReceiver 未弃用,但 LocalBroadcastManager 已弃用。

你可以在没有LocalBroadcastManager的情况下注册接收者,使用Context.registerReceiver()

并将您的响应结果放入SharedPreferences,并在您的ActivityFragmentViewModel 中使用SharedPreferences 的值作为LiveData 或Flow。

或者,使用带有RxJava 或Flow 的事件总线

【讨论】:

谢谢。不确定我能用它做任何事情,但我会尝试。

以上是关于如何从 FirebaseMessagingService 的 onNewToken() 访问我的布局?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

如何从 Firebase 获取所有设备令牌?

如何直接从类调用从接口继承的方法?

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

如何从Mac从android studio中的fabric注销? [复制]

如何从设备中获取 PDF 文件以便能够从我的应用程序中上传?