HarmonyOS 鸿蒙Next - 我该怎么优化官方的代码【AGC云数据库集成Android最新的新新新BUG】附核心源码
HarmonyOS 鸿蒙Next - 我该怎么优化官方的代码【AGC云数据库集成Android最新的新新新BUG】附核心源码
使用场景
–>APP用户匿名登录状态,对云数据库进行读写
首先匿名登录状态代码
private String useid; //匿名登录源码 private void initSQL() { AGConnectAuth.getInstance().signInAnonymously().addOnSuccessListener(new OnSuccessListener<SignInResult>() { @Override public void onSuccess(SignInResult signInResult) { // onSuccess AGConnectUser user = signInResult.getUser(); useid=user.getUid(); Log.w(“TAG”, "gei id= " +useid); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { // onFail } }); }
以上代码为前提,现在使用两种方法进行测试
第一种是废弃的老方法(官方废弃当然是存在BUG,但是运行稳定,可以读写数据库)
private AGConnectInstance instance; private Task<CloudDBZone> openDBZoneTask; private CloudDBZone mCloudDBZone; private AGConnectCloudDB mCloudDB; private CloudDBZoneConfig mConfig;
先上全局成员
第一种方法如下
private void LoadSQL() { AGConnectCloudDB.initialize(this); mCloudDB = AGConnectCloudDB.getInstance(); try { mCloudDB.createObjectType(ObjectTypeInfoHelper.getObjectTypeInfo()); } catch (AGConnectCloudDBException e) { Log.e(“CloudDB”, "createObjectType Failed " + e.getMessage()); } mConfig = new CloudDBZoneConfig(“QuickStartDemo”, CloudDBZoneConfig.CloudDBZoneSyncProperty.CLOUDDBZONE_CLOUD_CACHE, CloudDBZoneConfig.CloudDBZoneAccessProperty.CLOUDDBZONE_PUBLIC); mConfig.setPersistenceEnabled(true); try { mCloudDBZone = mCloudDB.openCloudDBZone(mConfig, true); } catch (AGConnectCloudDBException e) { Log.e(“CloudDB”, "openCloudDBZone failed: " + e.getMessage()); }}
第二种方式如下,是官方文档的异步文档,但是却无法正常读写数据
private void LoadSQL2(){ AGConnectCloudDB.initialize(this); instance = AGConnectInstance.buildInstance(new AGConnectOptionsBuilder() .setRoutePolicy(AGCRoutePolicy.CHINA).build(this)); mCloudDB = AGConnectCloudDB.getInstance(instance, AGConnectAuth.getInstance(instance));try { mCloudDB.createObjectType(ObjectTypeInfoHelper.getObjectTypeInfo()); mConfig = new CloudDBZoneConfig("QuickStartDemo", CloudDBZoneConfig.CloudDBZoneSyncProperty.CLOUDDBZONE_CLOUD_CACHE, CloudDBZoneConfig.CloudDBZoneAccessProperty.CLOUDDBZONE_PUBLIC); mConfig.setPersistenceEnabled(true); openDBZoneTask = mCloudDB.openCloudDBZone2(mConfig, true); openDBZoneTask.addOnSuccessListener(new OnSuccessListener<CloudDBZone>() { @Override public void onSuccess(CloudDBZone cloudDBZone) { Log.i("TAG", "open cloudDBZone success"); mCloudDBZone = cloudDBZone;//调用的时候根本无法赋值,哪怕代码写在这里已经无法写入新数据 } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { Log.w("TAG", "open cloudDBZone failed for " + e.getMessage()); } }); } catch (AGConnectCloudDBException e) { e.printStackTrace(); }
}
//第二种无法写入数据,官方的回复是登录认证失败,那么第二种方法并不适合匿名登录,需要怎么做,
比较第一种是官方遗弃的方法,却能正常使用,这是什么问题,我该怎么优化第二段的代码,谢谢
截图
这个最新的就很头疼了,不支持匿名登录用户啊
官方文档需要优化,个人解决方案如下:但去掉参数,会有什么不一样,华为大神能否解释一下,已经如何看文档解决问题呢?
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
博客首页 > AppGallery Connect > APP接入云数据库官方源码需要优化
APP接入云数据库官方源码需要优化
原创132******90 昨天 18:12:18 1
Android集成云数据库有匿名登录,但是官方文档存在问题,导致匿名用户无法新增数据mCloudDB = AGConnectCloudDB.getInstance(instance, AGConnectAuth.getInstance(instance));
官方文档应该修改为:
mCloudDB = AGConnectCloudDB.getInstance(instance,AGConnectAuth.getInstance());
我也是刚发现,这句代码果然好坑,坑了我昨天一下午,今天一下午
能解释一下,带参数后有啥不一样吗,农村人只会搬运,不懂原理
工单的回复是这样的
AGConnectAuth.getCurrentUser
并不是第二种方法不适合匿名登录,是您的匿名账号并未登陆成功,您可以通过AGConnectAuth.getCurrentUser方法判断当前认证服务是否登录。如果为null则未登录。
那么匿名登录代码是否有什么问题
mCloudDB = AGConnectCloudDB.getInstance(AGConnectInstance.getInstance(), AGConnectAuth.getInstance());
如果需要指定存储地,则应该是:
AGConnectInstance instance= AGConnectInstance.buildInstance(new AGConnectOptionsBuilder().setRoutePolicy(AGCRoutePolicy.CHINA).build(this));
mCloudDB = AGConnectCloudDB.getInstance(instance, AGConnectAuth.getInstance());
这里的差异是因为认证SDK接口AGConnectAuth的getInstance和getInstance(<带参数>)获取到的认证实例不共通导致的
还是大佬厉害啊
可以在github提pull request 欢迎一起优化示例代码
https://github.com/AppGalleryConnect/agc-android-demos
针对您提出的HarmonyOS鸿蒙Next中AGC云数据库集成Android的问题及附带的核心源码,优化官方代码通常涉及多个层面,包括但不限于认证服务、数据库操作等。
首先,确保您的代码遵循最新的HarmonyOS开发指南和最佳实践。对于匿名登录问题,应检查AGConnectCloudDB.getInstance()
方法的调用是否正确,确保传递了正确的认证实例。若官方文档中的异步方法无法正常读写数据,建议详细检查错误日志,确认是否由于登录认证失败导致。
此外,优化代码时,应考虑使用更高效的数据加载和缓存策略,减少数据库访问频次,提升应用性能。同时,确保您的开发环境(如DevEco Studio)和HarmonyOS SDK为最新版本,以获得最新的功能和性能优化。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。