700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > flutter友盟分享_Flutter 集成友盟 深坑

flutter友盟分享_Flutter 集成友盟 深坑

时间:2024-02-06 21:55:37

相关推荐

flutter友盟分享_Flutter 集成友盟 深坑

对于友盟在Flutter上的集成,官方虽然给出了sdk(/sdk/flutter),但是不好使,是真的不好使,不信的可以去试试,安卓费劲调好以后,ios又跑不起来。

最后跑到pub.dev按时间排序从第一位开始试,最后发现下面这个还是不错的,集成进去就可以用。

但是安卓这边有个坑,打开以后不发送日志,导致友盟控制台一直显示未集成。

曲线救国,最后发现调用userSignIn或userSignOut会发送日志。

但是signIn以后需要signOut,signOut后需要signIn,单独调用一个是没法一直发送启动日志的。

所以需要将上次是调用了signOut还是signIn记录一下,保证这次的调用与上次不同。

代码如下:

Future initAndroidDeviceId() async {

print("初始化设备id");

DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();

AndroidDeviceInfo androidDeviceInfo = await deviceInfo.androidInfo;

print("初始化自定义设备结束,id为:" + androidDeviceInfo.androidId);

return androidDeviceInfo.androidId;

}

void initUmeng() async {

print("初始化友盟开始");

await Umeng.init(

androidKey: BuildParam.androidU,

iosKey: BuildParam.iosU,

onlineParamEnabled: true,

logEnabled: true,

channel: BuildParam.appName,

);

if (!Platform.isAndroid) {

print("初始化友盟结束");

return;

}

//安卓系统特殊处理

String deviceId = await initAndroidDeviceId();

//上次是否是登录操作

bool lastSignIn = SpUtil.getBool("last_is_sign_in");

if (lastSignIn) {

print("上次为登录操作,本次为注销操作");

Umeng.onProfileSignOff();

SpUtil.putBool("last_is_sign_in", false);

} else {

print("上次为注销操作,本次为登录操作");

Umeng.onProfileSignIn(deviceId);

SpUtil.putBool("last_is_sign_in", true);

}

print("初始化友盟结束");

}

使用时,直接使用initUmeng()就可以了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。