Xamarin.Forms+MvvmCross接入AppCenter遇Distribute始终禁用问题及解决
解决 Xamarin.Forms + MvvmCross 5.5 集成 AppCenter 时 Distribute 始终未启用的问题
问题场景
有开发者遇到这样的问题:使用 Xamarin.Forms 搭配 MvvmCross 5.5 版本接入 AppCenter 后,不管在应用的哪个位置调用 AppCenter.Start(),执行 bool enabled = await Distribute.IsEnabledAsync(); 时返回值始终是 false;但在没有集成 MvvmCross 的纯 Xamarin.Forms 项目里测试相同代码,返回值却是正常的 true。
已验证的解决方案
经过多次尝试,最终通过以下两步解决了问题:
- 把 MvvmCross 版本升级到 6.0.1
- 将 AppCenter 的初始化代码移到闪屏页面的
RunAppStart方法中执行
具体的实现代码如下:
public class SplashScreen : MvxFormsSplashScreenActivity<Setup, MvxApp, FormsApp> { protected override void RunAppStart(Bundle bundle) { AppCenter.Start( "android=xxx;", typeof(Analytics), typeof(Crashes), typeof(Distribute)); StartActivity(typeof(FormsApplicationActivity)); base.RunAppStart(bundle); } }
可能的原因推测
结合版本升级和初始化位置调整来看,问题大概率是 MvvmCross 5.5 版本的应用生命周期管理与 AppCenter 的初始化时机存在冲突:
- 旧版本的 MvvmCross 在启动流程中可能会干扰 AppCenter 的状态初始化,导致 Distribute 模块无法正确启用
- 升级到 6.0.1 版本后,MvvmCross 的生命周期处理逻辑做了优化,同时将初始化代码放在闪屏页面的启动方法中,确保了 AppCenter 在应用核心组件启动前完成初始化,避免了时序上的冲突
内容的提问来源于stack exchange,提问作者Rudolf
相关产品推荐
相关产品推荐

