小编Sha*_*jid的帖子

如何使用Dagger 2向MyFirebaseMessagingService提供数据库,以便我可以在android中本地存储fcm消息

如何才能将数据库实例传递给MyFirebaseMessagingService扩展的类,FirebaseMessagingService以便我可以data在本地保存有效负载?

注意:我已经在我的应用程序中设置了匕首2,它运行正常.

以下是MyFirebaseMessagingService课程:

class MyFirebaseMessagingService @Inject constructor(exampleOneDao: ExampleOneDao?) : FirebaseMessagingService() {

    override fun onMessageReceived(remoteMessage: RemoteMessage?) {
    //need db instance to store data payload locally (Room)
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是AppModuleDagger 2 的等级

@Module(includes = arrayOf(ViewModelModule::class))
class AppModule() {

    // --- DATABASE INJECTION ---
    @Provides
    @Singleton
    internal fun provideDatabase(application: Application): MyDatabase {
        return Room.databaseBuilder(application,
               MyDatabase::class.java, "MyDatabase.db")
              .build()
    }

    @Provides
    @Singleton
    internal fun provideExampleOneDao(database: MyDatabase): ExampleOneDao {
        return database.exampleOneDao()
    }

    @Provides
    @Singleton
    internal fun …
Run Code Online (Sandbox Code Playgroud)

android kotlin firebase dagger-2 firebase-cloud-messaging

6
推荐指数
1
解决办法
2094
查看次数

如何使用Dagger 2在改造调用中添加授权标头

我有一个基于令牌的Api身份验证(Laravel Passport)的工作代码示例,但没有Dagger2。我想将代码从当前移动RetrofitBuilder.java到AppModule,以便可以在应用程序中使用Dagger 2的功能。

现在,在没有Dagger依赖的情况下,我有两个静态方法RetrofitBuilder.java可用于已认证的路由调用和未认证的路由调用:

1)createService(service)//进行没有授权标头的API调用(无访问令牌)

2)createServiceWithAuth(service, tokenManager)//进行API的调用具有授权标头,例如具有访问令牌


如何使用Dagger依赖项实现相同的功能。如何实现将上述两种方法提供给我的业务逻辑类,例如,UserRepository.java以便可以在需要的地方进行经过身份验证和未经身份验证的服务调用。

RetrofitBuilder.java

public class RetrofitBuilder {

    private static final String BASE_URL = "https://api.com/";

    private final static OkHttpClient client = buildClient();
    private final static Retrofit retrofit = buildRetrofit(client);

    private static OkHttpClient buildClient(){
        OkHttpClient.Builder builder = new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {
                        Request request = chain.request();

                        Request.Builder builder = request.newBuilder()
                                .addHeader("Accept", "application/json")
                                .addHeader("Connection", "close");

                        request = builder.build();

                        return …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2 laravel-passport

5
推荐指数
1
解决办法
1489
查看次数