0 purchases
umeng analytics with push
umeng_analytics_with_push #
友盟统计 (U-App) 与友盟分析 (U-Push) Flutter Plugin.
容易集成的友盟分析和Push,集成分析只需两步,集成 Push 再加两步。
Usage #
To use this plugin, add umeng_analytics_with_push as a dependency in your pubspec.yaml file.
For example:
dependencies:
umeng_analytics_with_push: ^0.2.1
copied to clipboard
该插件已遵循合规指南
该插件只集成了分析和Push必须的依赖项,其他可选项依赖由使用者根据实际需求添加。
比如 Crash, Push 厂商通道等,请参考 Example 添加。
Push 厂商通道会根据依赖和配置自动初始化,请参考厂商Push配置。
记录事件
// 无参数记录事件
UmengAnalyticsWithPush.onEvent("app_startup");
// or
// 参数
UmengAnalyticsWithPush.onEvent("app_startup", {
"time": DateTime.now().toISOString()
});
// or
// 参数 + counter
UmengAnalyticsWithPush.onEvent("app_startup", {
"time": DateTime.now().toISOString()
}, 1);
copied to clipboard
获取 DeviceToken,集成 Push 时调用
final deviceToken = await UmengAnalyticsWithPush.deviceToken;
copied to clipboard
统计路由
import 'package:umeng_analytics_with_push/umeng_analytics_with_push.dart';
class App extends StatelessWidget {
// ... other code
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorObservers: [UmengAnalyticsObserver(log: !kReleaseMode)],
// ...
}
}
copied to clipboard
其他 API
// 获取 OAID
final String oaid = await UmengAnalyticsWithPush.oaid;
// 获取 UTDID
final String utdid = await UmengAnalyticsWithPush.utdid;
// 用户登录
await UmengAnalyticsWithPush.onProfileSignIn("ID", "Provider");
// 用户登出
await UmengAnalyticsWithPush.onProfileSignOut();
// 获取测试设备信息
final String testInfo = await UmengAnalyticsWithPush.testDeviceInfo;
// 以下 API 在集成 Push 时可调用
// Alias
await UmengAnalyticsWithPush.putAlias("from", "I'm from flutter");
await UmengAnalyticsWithPush.addAlias("from", "I'm from flutter");
await UmengAnalyticsWithPush.removeAlias("from", "I'm from flutter");
// Tags
await UmengAnalyticsWithPush.addTags(["flutter_tag1", "flutter_tag2"]);
final List<String> tags = await UmengAnalyticsWithPush.getTags();
await UmengAnalyticsWithPush.removeTags(["flutter_tag1", "flutter_tag2"]);
copied to clipboard
Setup #
暂不支持 Dart 处理自定义消息
Flutter #
Initialization
可在用户同意隐私协议后再调用该方法,建议每次都调用
await UmengAnalyticsWithPush.initialize();
copied to clipboard
Android #
Initialization
import com.auwx.umeng_analytics_with_push.UmengAnalyticsWithPush
import io.flutter.app.FlutterApplication
class App: FlutterApplication() {
override fun onCreate() {
super.onCreate()
UmengAnalyticsWithPush.preinitial(
this,
// AppKey, secret, channel 也可配置在 AndroidManifest 中
// Required here or AndroidManifest.application
// <meta-data android:name="UMENG_APPKEY" android:value="aaaaaaaaaaaaaaaaaa" />
// <meta-data android:name="UMENG_SECRET" android:value="aaaaaaaaaaaaaaaaaa" />
// <meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL}" />
appKey = getString(R.string.umeng_app_key),
secret = getString(R.string.umeng_secret),
channel = BuildConfig.FLAVOR,
enableLog = BuildConfig.DEBUG,
// ... other arguments
)
}
}
copied to clipboard
进阶 #
配置厂商 Push 通道
厂商配置需要使用者手动添加,需要同时添加厂商通道的依赖并在 AndroidManifest 中配置相应的id才会生效
配置成功后插件会自动调用厂商Push的初始化
app build.gradle
dependencies {
// 以下配置请根据需求选择性添加
// Umeng Push 厂商 SDK https://developer.umeng.com/docs/67966/detail/98589
// 小米 Push 通道
implementation 'com.umeng.umsdk:xiaomi-push:4.9.1'
implementation 'com.umeng.umsdk:xiaomi-umengaccs:1.2.8'
// 华为 Push 通道
implementation 'com.huawei.hms:push:6.1.0.300'
implementation 'com.umeng.umsdk:huawei-umengaccs:1.3.6'
// Vivo Push 通道
implementation 'com.umeng.umsdk:vivo-push:3.0.0.4'
implementation 'com.umeng.umsdk:vivo-umengaccs:1.1.6'
// Meizu Push 通道
implementation 'com.umeng.umsdk:meizu-push:4.1.4'
implementation 'com.umeng.umsdk:meizu-umengaccs:1.1.5'
// Oppo Push 通道
implementation 'com.umeng.umsdk:oppo-push:3.0.0'
implementation 'com.umeng.umsdk:oppo-umengaccs:1.0.8-fix'
}
copied to clipboard
华为Push还需添加额外依赖,请参考此处链接 完成配置
AndroidManifest.xml
<manifest>
<application android:name=".App">
<!-- ** Umeng Start ** -->
<!-- Required Here or UmengAnalyticsWithPush.preinitial() -->
<meta-data
android:name="UMENG_APPKEY"
android:value="@string/umeng_app_key" /> <!-- Channel ID用来标识App的推广渠道,作为推送消息时给用户分组的一个维度。 -->
<!-- Option your flavor name,
in your build.gradle manifestPlaceholders = [UMENG_CHANNEL: ""]
请参考 example app build.gradle
-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL}" />
<!-- Under tag is umeng_analysis_with_push plugin define -->
<!-- Option if don't need push -->
<meta-data
android:name="UMENG_SECRET"
android:value="@string/umeng_secret" />
<!-- 以下为厂商推送配置,具体请参考Umeng官方文档 https://developer.umeng.com/docs/67966/detail/98589 -->
<!-- 以下配置请根据需求选择性添加 -->
<!-- huawei push参数声明 -->
<!-- huawei start Option -->
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="appid=000000000" />
<!-- huawei end -->
<!-- Vivo push参数声明 -->
<!-- Vivo start-->
<meta-data
android:name="com.vivo.push.app_id"
android:value="000000000" />
<meta-data
android:name="com.vivo.push.api_key"
android:value="aaaaaaaaaaaaaaaaaaaaaaaa" />
<!-- Vivo end-->
<!-- Oppo push参数声明 -->
<!-- Oppo start-->
<!-- Under tag is umeng_analysis_with_push plugin define -->
<meta-data
android:name="com.oppo.push.app_key"
android:value="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" />
<meta-data
android:name="com.oppo.push.app_secret"
android:value="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" />
<!-- Oppo end-->
<!-- Meizu push 参数声明 https://developer.umeng.com/docs/67966/detail/98589#h1--push-4 -->
<!-- Meizu start-->
<!-- Under tag is umeng_analysis_with_push plugin define -->
<meta-data
android:name="com.meizu.push.app_id"
android:value="aaaaaaaaaaaaaaaaaaa" />
<meta-data
android:name="com.meizu.push.app_key"
android:value="aaaaaaaaaaaaaaaaaaaa" />
<!-- Meizu end-->
<!-- XiaoMi start-->
<!-- Under tag is umeng_analysis_with_push plugin define -->
<!-- Android 会将纯数字的 meta-data 识别为 Number 类型
所有数字形式的 meta-data 请在加前缀 "\ " 或定义到 strings.xml 中在此处引用以识别为 String -->
<meta-data
android:name="com.xiaomi.push.app_id"
android:value="\ 000000000000000000000" />
<meta-data
android:name="com.xiaomi.push.app_key"
android:value="\ 0000000000000" />
<!-- XiaoMi end-->
<!-- ** Umeng End ** -->
</application>
</manifest>
copied to clipboard
魅族接入
受魅族接入限制,魅族需要在包名目录下实现一个自定义Recevier,继承自MeizuPushReceiver,例如:
public class MeizuTestReceiver extends MeizuPushReceiver {
}
copied to clipboard
然后在AndroidManifest.xml中配置该Recevier,例如:
<!--魅族push应用定义消息receiver声明 -->
<receiver android:name="${applicationId}.MeizuTestReceiver">
<intent-filter>
<!-- 接收push消息 -->
<action android:name="com.meizu.flyme.push.intent.MESSAGE" />
<!-- 接收register消息 -->
<action android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
<!-- 接收unregister消息-->
<action android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />
<!-- 兼容低版本Flyme3推送服务配置 -->
<action android:name="com.meizu.c2dm.intent.REGISTRATION" />
<action android:name="com.meizu.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
copied to clipboard
请在drawable目录下添加一个图标,命名为stat_sys_third_app_notify.png,建议尺寸64px * 64px,图标四周留有透明。若不添加此图标,可能在部分魅族手机上无法弹出通知。
Crash 收集
自己在主工程添加依赖项即可
app build.gradle
dependencies {
implementation 'com.umeng.umsdk:crash:0.0.5'
}
copied to clipboard
iOS #
暂未支持
Usage #
Look at exapmle
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.