google 、facebook登录实现方案
1.全局弹窗 google、facebook 登录实现
由于google,facebook登录成功或者失败的回调需要有Activity来承载(登录sdk要求) 。
实现全局Dialog登录弹窗的方案采用:
一个透明TransportActivity + 一个底部弹出FragmentDialog组成
由于 TransportActivity与FragmentDialog不在同一个module中,为了更好的解耦引入ARouter
interface TouristDelegate : IProvider {
// 传递参数
fun setBundle(bundle: Bundle)
//显示dialog
fun show(tag: String, context: FragmentManager)
//dimiss 回调
fun finishCallBack(callBack: CallBack)
}
定义登录ui承载的FragmentDialog对外提供服务,类图如下:

接口A转处理类B的内部接口IB
基于以上方案可以实现TransportActivity(透明Activity)与 承载登录Ui的DialogFragment解耦。
方案二:
reView Google与faceBook sdk 发现并非必须提供一个Activity来承载登录成功的回调接口,Fragment也可以。
这样就可以去掉,ARouter与对外提供的服务接口、 TransportActivity(透明Activity)直接全局调用
承载登录Ui的DialogFragment来进行登录授权
遇到问题:
1.修改完module生成aar,发布到Maven 仓库后。aar包中的依赖无法引用到
解决:module中的依赖需要生成pom.xml 才可以被maven识别。自行创建生成Pom的Task脚本
引用地址:https://github.com/chrisbanes/gradle-mvn-push
2.第一个问题的缓存导致无法更新本地新上传到maven仓库的Aar包。两个缓存位置分别 D:\normalsoft\java\jdk1.8.0_181\caches, C:\Users\Administrator.gradle\caches中
引用地址:https://blog.csdn.net/qq_36497605/article/details/90295200
相关代码:
class TransportActivity : BaseActivity() {
private var mDialogFragment: Fragment? = null
lateinit var mBinding: ComponentActivityTransportBinding
override fun initLayout() {
super.initLayout()
mActivityParent.setBackgroundColor(Color.TRANSPARENT)
mBinding = ComponentActivityTransportBinding.inflate(layoutInflater)
contentView = mBinding.root
mDialogFragment =
ARouter.getInstance().build(PathConfig.BINDSHEET_FRAGMENT).navigation() as Fragment
mDialogFragment?.let {
if (it is TouristDelegate) {
it.finishCallBack(CallBack {
finish()
})
it.setBundle(bundle)
it.show(it::class.java.simpleName, supportFragmentManager)
}
} ?: Logger.e("mDialogFragment is null, please check fragment")
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (ConstantPool.isOversean) {
mDialogFragment?.onActivityResult(requestCode, resultCode, data)
?: Logger.e("mDialogFragment is Null")
}
}
}
总结:通过以上验证了。透明Activity与Dialog交互。通过扩展Arouter provider接口 对两个类解耦。正确的通过 Module生成aar 上传Maven仓库。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)