美文网首页程序员Android开发经验谈Android技术知识
Android接入firebase遇到的坑及解决方案

Android接入firebase遇到的坑及解决方案

作者: 小鹿啊小鹿 | 来源:发表于2020-01-02 10:20 被阅读0次

    ➤ 1、登录firebase账号后,判断token是否失效不起作用,错误代码如下

     FirebaseAuth mainAuth = FirebaseAuth.getInstance(CommonApplication.getPolycentsApp());
     FirebaseUser  mUser = mainAuth.getCurrentUser();
     mUser.getIdToken(false).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
         public void onComplete(@NonNull Task<GetTokenResult> task) {
            if (task.isSuccessful()) {
                String idToken = task.getResult().getToken();
                long expressionTime = task.getResult().getExpirationTimestamp();
                   if (System.currentTimeMillis() > expressionTime * 1000){
                    //token过期,退出到登录界面
                    ToastUtils.showShort(SplashActivity.this,getResources().getString(R.string.token_has_out));
                                                    signOut();
                    }else{
                   //token未过期
                    }
                } else {
                 // Handle error -> task.getException();
                //token验证异常
            }
                                            
         }
     });
    

    ☞ 1 的修改方法

    红框中的代码应该为图2绿框中,firebase用户信息需要在获取token前重新加载

    错误示范 正确示范

    ➤2、对firebase Cloud FireStore数据库一次增/删/查/改操作大于500条数据时,操作失败

    firebase数据库使用Cloud fireStore时,大量数据库操作支持使用batch,但是batch操作有一个限制,一次batch上传的数据不可以超过500条,不然batch会直接回滚成0条数据,造成数据丢失;


    image.png

    ☞ 2 的解决方案

    遍历需要操作的数据,判断是否大于500条,分批上传


    简单示例

    ➤3、对同一部分数据,先向firebase执行上传数据操作,后立刻执行下载该部分数据,导致一直获取不到返回结果(此时并不知道上一步的上传数据操作是否完成)。由于firebase对数据库的操作是异步线程的,所以当两个异步线程同时读写同一数据时,需等待上个线程释放完改数据之后才可以访问。

    ☞ 3 解决方案,建议所有读写操作判断每一步完成之后在进行下一步操作

    ✍︎更新中......

    相关文章

      网友评论

        本文标题:Android接入firebase遇到的坑及解决方案

        本文链接:https://www.haomeiwen.com/subject/mvynoctx.html