我正在使用Firebase数据库服务来同步用户数据。我启用了脱机兼容性,问题是在使用了几个月后,用户的数据没有提交到在线数据库中,显然是因为用户的电话系统阻止了应用程序的互联网连接。
在某些情况下,我设法引导用户启用“无限制数据使用”选项,但并不适合所有人。
在我的例子中,问题是监听器:
void onDataChange(DataSnapshot var1);
我还尝试用gooffline()
替换goonline()
,但没有任何结果。
我不明白为什么手机会阻止我的应用程序同步,让脸书和Youtube等应用程序消耗大量的互联网数据。
这种行为只发生在Android设备上,在使用相同Firebase数据库的iOS手机上没有问题。
11-13 21:12:28.477 15765 15856 D PersistentConnection: pc_0 - Scheduling connection attempt
11-13 21:12:28.477 15765 15856 D ConnectionRetryHelper: Scheduling retry in 26091ms
11-13 21:12:54.597 15765 15856 D PersistentConnection: pc_0 - Trying to fetch auth token
11-13 21:12:55.747 15765 15856 D PersistentConnection: pc_0 - Error fetching token: An internal error has occurred. [
TOKEN_EXPIRED ]
当我试图插入新数据时:
RepoOperation: Aborting transactions for path: [the path]
经过长时间的调查,我发现令牌没有自动刷新。
首先,检查当前用户是否使用FirebaseAuth.AuthStateListener
登录
检查是否需要刷新令牌
public static boolean isOnline(Context context)
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnectedOrConnecting();
}
try
{
user.getIdToken(true).addOnCompleteListener(new OnCompleteListener<GetTokenResult>()
{
@Override
public void onComplete(@NonNull Task<GetTokenResult> task)
{
if (task.isSuccessful())
{
//succcess
} else
{
//need login again
}
}
});
}catch(Exception e)
{
//need login again
}
一切正常,但DatabaseReference无法获取数据,这就像是忽略了我的代码运行,就像我的internet无法运行一样,请帮助我,我是这个社区的新手,下面是我的代码和图片。 以前它是工作的,但由于我只是更改了一些代码,使只有currentVersion>=vCode,这样即使数据库中的值是 firebase数据库映像 mainactivity.java manifest.xml 依赖关系
我正在做一个应用程序,我必须从firebase获取一些数据,并在RecyclerView中显示。但textView字段仍然为空,并且不显示任何数据。下面是db结构。我想获取“AlphabetMatching”下的节点的数据,但未能获取。回收器显示了我为行所做的布局,但没有数据库中的数据。 activity班: VIEWHOLDER类: } AMAW类 }
问题内容: 我需要连续监视数据库行以检查更改(更新)。如果其他来源进行了某些更改或更新,则应在我的应用程序上触发该事件(我正在使用WCF)。有什么办法可以连续监听数据库行中的更改吗? 我可能拥有更多事件来监视同一表中的不同行。在性能方面有什么问题。我正在使用C#Web服务监视SQL Server后端。 问题答案: 不久前,我有一个非常相似的要求,我使用CLR SP将数据推送到消息队列中来解决了这个
我的应用程序有一个目录,它使用Firebase来存储和更新数据。我想显示已经缓存的数据,如果应用程序被杀死,并再次启动,而不在线。 firebase是否在应用程序被终止时删除缓存? 无论用户在线或离线,我们都可以首先推送离线数据。
与RDBMS相似,OrientDB也提供了和等事务概念。 提交是指通过保存对数据库的所有更改来关闭事务。 回滚是指将数据库状态恢复到您打开事务的位置。 以下语句是数据库命令的基本语法。 注 - 只有在连接到特定数据库并开始事务后,才能使用此命令。 示例 在这个例子中,我们将使用在前一章中创建的名为的数据库。将看到提交事务的操作并使用事务来存储记录。 首先,使用以下命令启动事务。 然后,使用以下命令
正如上图所示,我的数据库树结构很简单,它有一个名为的主节点,在这个节点下,我创建了许多其他聊天。Evey单个子节点将有许多其他带有聊天消息的子节点。 使用Firebase管理sdk am监听主节点IE。 现在,当子节点发生任何更改时,即当在子节点中添加新的聊天消息时,方法将被激发,并使用具有所有子节点的datasnapshot。假设如果新的聊天消息被添加到节点,那么方法就会用所有以前的聊天消息触发