
说真的。文档体验绝了
说真的。文档体验绝了,真的绝了。
我们用开源的东西本不该开口索要的,uni-app也算是你们的一个产品了。 你们也有商业模式,能否将文档好好整理一下, 文档体验简直不要太好
说真的。文档体验绝了,真的绝了。
我们用开源的东西本不该开口索要的,uni-app也算是你们的一个产品了。 你们也有商业模式,能否将文档好好整理一下, 文档体验简直不要太好

tag的监听事件方法。
代码渲染的titleNView 里的tag如何监听。代码如下。
假设你的tags里有一个子tag left 距离是30,宽度是130。
//那么就先定义监听区域
plus.webview.currentWebview().getTitleNView().setTouchEventRect({top:'0px',left:'30px',width:'130px',height:'100%'})
//创建监听。
plus.webview.currentWebview().getTitleNView().addEventListener("click",function(e){ })
注:setTouchEventRect 可以传数组。多个区域监听。
有问题欢迎留言,大家一起讨论。
代码渲染的titleNView 里的tag如何监听。代码如下。
假设你的tags里有一个子tag left 距离是30,宽度是130。
//那么就先定义监听区域
plus.webview.currentWebview().getTitleNView().setTouchEventRect({top:'0px',left:'30px',width:'130px',height:'100%'})
//创建监听。
plus.webview.currentWebview().getTitleNView().addEventListener("click",function(e){ })
注:setTouchEventRect 可以传数组。多个区域监听。
有问题欢迎留言,大家一起讨论。

uniapp直接跳转应用商店
// 跳转应用商店
export const jumpToAppMarket = (code) => {
// 可以根據文檔換成其他商店 https://www.jianshu.com/p/b544810beac3
const googlePlay = "com.android.vending";
if (plus.os.name == "Android") {
var Uri = plus.android.importClass("android.net.Uri");
var Intent = plus.android.importClass('android.content.Intent');
var main = plus.android.runtimeMainActivity();
var uri = Uri.parse("market://details?id=" + 包名);
var intent = new Intent(Intent.ACTION_VIEW, uri);
// 选择进入商店
intent.setPackage(googlePlay);
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
// 没有该商店应用
if (intent.resolveActivity(main.getPackageManager()) !== null) {
main.startActivity(intent);
} else {
// 跳转浏览器
let uri = Uri.parse("https://play.google.com/store/apps/details?id=" + 包名);
let intent = new Intent(Intent.ACTION_VIEW, uri);
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
intent.setPackage('com.android.browser');
main.startActivity(intent);
}
} else {
plus.runtime.openURL('itms-apps://itunes.apple.com/cn/app/id{appid}?mt=8');
}
}
// 跳转应用商店
export const jumpToAppMarket = (code) => {
// 可以根據文檔換成其他商店 https://www.jianshu.com/p/b544810beac3
const googlePlay = "com.android.vending";
if (plus.os.name == "Android") {
var Uri = plus.android.importClass("android.net.Uri");
var Intent = plus.android.importClass('android.content.Intent');
var main = plus.android.runtimeMainActivity();
var uri = Uri.parse("market://details?id=" + 包名);
var intent = new Intent(Intent.ACTION_VIEW, uri);
// 选择进入商店
intent.setPackage(googlePlay);
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
// 没有该商店应用
if (intent.resolveActivity(main.getPackageManager()) !== null) {
main.startActivity(intent);
} else {
// 跳转浏览器
let uri = Uri.parse("https://play.google.com/store/apps/details?id=" + 包名);
let intent = new Intent(Intent.ACTION_VIEW, uri);
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
intent.setPackage('com.android.browser');
main.startActivity(intent);
}
} else {
plus.runtime.openURL('itms-apps://itunes.apple.com/cn/app/id{appid}?mt=8');
}
}
收起阅读 »
基于uniapp打包生成app,并引入本地原生插件步骤和踩坑
看到社区很多同学对于uniapp和原生混合开发配置问题,就怎么引入原生本地插件并配置运行步骤详解
1.首先在你的文件夹下建nativeplugins目录,将本地开发的原生插件代码包按照格式放入
2.对nativeplugins目录下的pack.json进行配置 注意name和id要与目录名保持一致,class要安卓小伙伴给你,包名 类名
3.在manifest.json进行插件引入
第四步:点击运行到手机或模拟器,先制定基座,制作完成后在运行基座选择自定义基座,进行打包即可
看到社区很多同学对于uniapp和原生混合开发配置问题,就怎么引入原生本地插件并配置运行步骤详解
1.首先在你的文件夹下建nativeplugins目录,将本地开发的原生插件代码包按照格式放入
2.对nativeplugins目录下的pack.json进行配置 注意name和id要与目录名保持一致,class要安卓小伙伴给你,包名 类名
3.在manifest.json进行插件引入
第四步:点击运行到手机或模拟器,先制定基座,制作完成后在运行基座选择自定义基座,进行打包即可
收起阅读 »

录音支持暂停、继续、后台录音、息屏录音(ios、andorid)
录音支持暂停、继续、后台录音、息屏录音(ios、andorid) :https://ext.dcloud.net.cn/plugin?id=5849
录音支持暂停、继续、后台录音、息屏录音(ios、andorid) :https://ext.dcloud.net.cn/plugin?id=5849

强制安卓进入前台运行,完整代码及遇到的坑
最近突发奇想,想做一个给自己用的app,主要时做一些个人记录和强制停止无脑刷屏==。
在每次解锁手机或刷视频超过一定时间,后台就把自己开发的app进入前台,提醒自己的目标及可以做其他的事有什么。
网上的资料并不能完整的解决问题,然后就自己撸了一下代码。
todo 之后有空的话把这部分打包成一个uniapp的插件。
完整代码
Timer topTimer=null;
public void startTopTimer(){
stopTopTimer();
topTimer=new Timer();
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
activityInTop();
}
};
topTimer.schedule(timerTask,0,500);
}
public void stopTopTimer(){
if(topTimer!=null){
topTimer.cancel();
topTimer=null;
}
}
public void activityInTop() {
/**获取ActivityManager*/
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);
/**获得当前运行的task(任务)*/
int nowPosition=0;
List<ActivityManager.RunningTaskInfo> taskInfoList = activityManager.getRunningTasks(100);
for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) {
/**找到本应用的 task,并将它切换到前台*/
if (taskInfo.topActivity.getPackageName().equals(getApplicationContext().getPackageName())) {
if(nowPosition==0){
stopTopTimer();
return;
}
activityManager.moveTaskToFront(taskInfo.id, 0);
Log.d(TAG, "找到本应用的 task,并将它切换到前台");
return;
}
nowPosition++;
}
// 应用需要置顶且前台应用被关闭时,重新打开应用
Intent intent=getPackageManager().getLaunchIntentForPackage(getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
使用
startTopTimer();
碰到的坑
应用被关闭时,service需要拉起一个新的应用
// 应用需要置顶且前台应用被关闭时,重新打开应用
Intent intent=getPackageManager().getLaunchIntentForPackage(getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
moveTaskToFront需要在应用进入后台5-7s后执行
解决方案:执行moveTaskToFront方法后,判断是否成功。不成功每间隔500ms再执行一次,直到成功为止。
最近突发奇想,想做一个给自己用的app,主要时做一些个人记录和强制停止无脑刷屏==。
在每次解锁手机或刷视频超过一定时间,后台就把自己开发的app进入前台,提醒自己的目标及可以做其他的事有什么。
网上的资料并不能完整的解决问题,然后就自己撸了一下代码。
todo 之后有空的话把这部分打包成一个uniapp的插件。
完整代码
Timer topTimer=null;
public void startTopTimer(){
stopTopTimer();
topTimer=new Timer();
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
activityInTop();
}
};
topTimer.schedule(timerTask,0,500);
}
public void stopTopTimer(){
if(topTimer!=null){
topTimer.cancel();
topTimer=null;
}
}
public void activityInTop() {
/**获取ActivityManager*/
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);
/**获得当前运行的task(任务)*/
int nowPosition=0;
List<ActivityManager.RunningTaskInfo> taskInfoList = activityManager.getRunningTasks(100);
for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) {
/**找到本应用的 task,并将它切换到前台*/
if (taskInfo.topActivity.getPackageName().equals(getApplicationContext().getPackageName())) {
if(nowPosition==0){
stopTopTimer();
return;
}
activityManager.moveTaskToFront(taskInfo.id, 0);
Log.d(TAG, "找到本应用的 task,并将它切换到前台");
return;
}
nowPosition++;
}
// 应用需要置顶且前台应用被关闭时,重新打开应用
Intent intent=getPackageManager().getLaunchIntentForPackage(getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
使用
startTopTimer();
碰到的坑
应用被关闭时,service需要拉起一个新的应用
// 应用需要置顶且前台应用被关闭时,重新打开应用
Intent intent=getPackageManager().getLaunchIntentForPackage(getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
moveTaskToFront需要在应用进入后台5-7s后执行
解决方案:执行moveTaskToFront方法后,判断是否成功。不成功每间隔500ms再执行一次,直到成功为止。
收起阅读 »
Android 音乐通知栏Native.js版本!
代码
const androidNotifi = {
NotifyID: 237,
receiver:null,
NotifiService:null,
serv: null,
intent: null,
mNotificationBuild: null,
mediaBtn: null,
channelID : '1',
channelName : '音乐通知',
notifiImg:{},
getImgTemp: function(audioImage) {
return new Promise(resolve => {
if (this.notifiImg[encodeURIComponent(audioImage)]) {
return resolve(plus.io.convertLocalFileSystemURL(this.notifiImg[encodeURIComponent(audioImage)]));
}
if(!/^http/.test(audioImage)) {
this.notifiImg[encodeURIComponent(audioImage)] = audioImage ? audioImage : '_www/static/image/notifimusic.png';
return resolve(plus.io.convertLocalFileSystemURL(audioImage ? audioImage : '_www/static/image/notifimusic.png'));
}
uni.downloadFile({
url: audioImage,
complete: res => {
this.notifiImg[encodeURIComponent(audioImage)] = res.tempFilePath ? res.tempFilePath : '_www/static/image/notifimusic.png';
return resolve(plus.io.convertLocalFileSystemURL(res.tempFilePath ? res.tempFilePath : '_www/static/image/notifimusic.png'));
}
});
});
},
hideNotifi: function(server = false){
this.main&&this.receiver&&this.main.unregisterReceiver(this.receiver);
server&&this.serv&&this.serv.stopForeground&&this.serv.stopForeground(this.NotifyID, this.mNotificationBuild) ;
if (Number(plus.os.version.split('.')[0])>= 8){
this.NotifiService&&this.NotifiService.cancel&&this.NotifiService.cancel(this.channelID,this.NotifyID);
} else {
this.NotifiService&&this.NotifiService.cancel&&this.NotifiService.cancel(this.NotifyID);
}
this.receiver = null;
this.NotifiService = null;
this.serv = null;
this.intent = null;
this.mNotificationBuild = null;
// this.NotifiService&&this.NotifiService.cancelAll&&this.NotifiService.cancelAll();
this.mediaBtn ? this.mediaBtn.release() : ''; // 线控销毁
},
showNotifi:async function(param) {
if (uni.$_sko.systemInfo.platform != 'android') {
return;
}
try{
param = Object.assign({
title : '通知标题',
subTitle: '',
cont : '通知内容',
isPlay: true, // 媒体播放按钮
legIcon : plus.io.convertLocalFileSystemURL('_www/static/image/notifimusic.png'),
Ongoing : false, // 不可删除
},param);
this.main = this.main ? this.main : plus.android.runtimeMainActivity();
var Context = plus.android.importClass("android.content.Context");
var BitmapFactory = plus.android.importClass("android.graphics.BitmapFactory");
var NotificationManager = plus.android.importClass("android.app.NotificationManager");
var Notification = plus.android.importClass("android.app.Notification");;
var Intent = plus.android.importClass("android.content.Intent");
var PendingIntent = plus.android.importClass("android.app.PendingIntent");
var androidR = plus.android.importClass("android.R");
this.NotifiService = this.NotifiService ? this.NotifiService : this.main.getSystemService(Context.NOTIFICATION_SERVICE);
this.intent = this.intent ? this.intent : new Intent(this.main, this.main.getClass());
var UNI_MEDIA_BROAD = this.main.getPackageName() + '.mediaBtn';
//PendingIntent.getActivity的第二个参数需要设置为随机数,否则多个通知时会导致前面的通知被后面的通知替换Extra的数据
var pendingIntent = PendingIntent.getActivity(this.main, 0, this.intent, PendingIntent.FLAG_CANCEL_CURRENT);
var firstVersionNumber = Number(plus.os.version.split('.')[0]);
var mNotification;
//判断当前系统版本在8.0及以上
if (firstVersionNumber >= 8){
if (this.NotifiService.getNotificationChannel() == null){
var NotificationChannel = plus.android.importClass('android.app.NotificationChannel');
var channel = new NotificationChannel(this.channelID, this.channelName, NotificationManager.IMPORTANCE_HIGH);
this.NotifiService.createNotificationChannel(channel);
plus.android.autoCollection(NotificationChannel);
}
param.callBack&&this.main.startForegroundService(this.intent);
mNotification = new Notification.Builder(this.main, this.channelID);
} else {
mNotification = new Notification.Builder(this.main);
param.callBack&&this.main.startService(this.intent);
}
if(param.callBack) {
mNotification.addAction(androidR.drawable.ic_media_previous, "prev", PendingIntent.getBroadcast(this.main, 0, new Intent().setAction(UNI_MEDIA_BROAD + '.prev'), PendingIntent.FLAG_CANCEL_CURRENT));
mNotification.addAction((param.isPlay ? androidR.drawable.ic_media_pause : androidR.drawable.ic_media_play), "play", PendingIntent.getBroadcast(this.main, 0, new Intent().setAction(UNI_MEDIA_BROAD + '.play'), PendingIntent.FLAG_CANCEL_CURRENT));
mNotification.addAction(androidR.drawable.ic_media_next, "next", PendingIntent.getBroadcast(this.main, 0, new Intent().setAction(UNI_MEDIA_BROAD + '.next'), PendingIntent.FLAG_CANCEL_CURRENT));
var mMediaStyle = new Notification.MediaStyle();
mMediaStyle.setShowActionsInCompactView(0, 1, 2);
mNotification.setStyle(mMediaStyle);
}
mNotification.setOngoing(param.Ongoing);
param.legIcon&&mNotification.setLargeIcon(BitmapFactory.decodeFile(await this.getImgTemp(param.legIcon)));
mNotification.setSmallIcon(param.callBack?androidR.drawable.stat_sys_headset:androidR.drawable.stat_notify_chat); //设置图标
mNotification.setContentTitle(param.title);//设置标题
mNotification.setContentText(param.cont); //设置内容
param.subTitle&&mNotification.setSubText(param.subTitle); //子内容暂时去掉
// mNotification.setAutoCancel(true); //设置点击消失
// mNotification.setShowWhen(true); //显示通知时间
mNotification.setTicker("PadInfo"); //弹出通知
mNotification.setDefaults(Notification.DEFAULT_ALL);
// mNotification.setPriority(Notification.PRIORITY_DEFAULT); //通知优先级
// mNotification.flags=Notification.FLAG_ONLY_ALERT_ONCE; //发起通知时震动
mNotification.setContentIntent(pendingIntent);
this.mNotificationBuild = mNotification.build();
if (firstVersionNumber>= 8){
this.NotifiService.notify(this.channelID, this.NotifyID, this.mNotificationBuild);
} else {
this.NotifiService.notify(this.NotifyID, this.mNotificationBuild);
}
if(param.callBack) {
this.main&&this.receiver&&this.main.unregisterReceiver(this.receiver);
this.receiver = this.receiver ? this.receiver : plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function(context, intent) { //实现onReceiver回调函数
param.callBack(intent.getAction().replace(UNI_MEDIA_BROAD + '.',''));
}
});
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
var filter = new IntentFilter();
filter.addAction(UNI_MEDIA_BROAD + '.prev');
filter.addAction(UNI_MEDIA_BROAD + '.play');
filter.addAction(UNI_MEDIA_BROAD + '.next');
this.main.unregisterReceiver(this.receiver);
this.main.registerReceiver(this.receiver, filter); //注册监听
this.mediaBtn = uni.requireNativePlugin('uniMediaButton'); // 监听线控 需要配合附件中的插件( Android API >= 26)
this.mediaBtn.initMediaButton(res => {
console.log(res.message);
// 绑定失败/销毁
if(res.code == '-1') {
this.mediaBtn = null;
return;
}
// res.keyAction == 1 按键松开 res.keyAction == 0 按键按下 播放按钮肯能只有按下
if(res.keyCode && res.keyAction == '0') {
switch (res.keyCode){
case 88:
param.callBack(
'prev'
);
break;
case 87:
param.callBack(
'next'
);
break;
case 127:
case 126:
param.callBack(
'play'
);
break;
}
}
});
var serv = plus.android.importClass("android.app.Service");
this.serv = this.serv ? this.serv : new serv();
this.serv.startForeground(this.NotifyID, this.mNotificationBuild);
plus.android.autoCollection(serv);
plus.android.autoCollection(IntentFilter);
}
plus.android.autoCollection(Context);
plus.android.autoCollection(BitmapFactory);
plus.android.autoCollection(NotificationManager);
plus.android.autoCollection(Notification);
plus.android.autoCollection(Intent);
plus.android.autoCollection(PendingIntent);
plus.android.autoCollection(androidR);
plus.android.autoCollection(this.receiver);
}catch(e){
console.log(e);
}
}
};
使用方法
// 开启 - 更新标题/播放(暂停)按钮
show();
function show(){
androidNotifi.showNotifi({
title : '通知标题',
subTitle: '通知小标题',
cont : '通知内容',
isPlay: true, // 媒体播放按钮状态(控制播放/暂停按钮样式)
legIcon : '', // 封面图片
Ongoing : false, // 是否可删除
callBack:function(res){
switch (res){
case 'play':
console.log('play');
break;
case 'prev':
console.log('prev');
break;
case 'next':
console.log('next');
break;
}
}
})
}
// 关闭
function hide(){
androidNotifi.hideNotifi();
}
由于Android播放视频没有通知栏控制.开始一直使用XZH-musicNotification 的插件,但是由于版本更新,出现BUG(插件已更新).
但是不能总等插件更新,就自己动动手写了一个Native.js版本,由于手上设备不多,没有测试更多的兼容性.在这里希望大家能勇于使用修改提出问题,完善此通知提示!
附件是线控耳机、蓝牙耳机按键监听插件(API >= 26,X86好像不支持忘了)
代码
const androidNotifi = {
NotifyID: 237,
receiver:null,
NotifiService:null,
serv: null,
intent: null,
mNotificationBuild: null,
mediaBtn: null,
channelID : '1',
channelName : '音乐通知',
notifiImg:{},
getImgTemp: function(audioImage) {
return new Promise(resolve => {
if (this.notifiImg[encodeURIComponent(audioImage)]) {
return resolve(plus.io.convertLocalFileSystemURL(this.notifiImg[encodeURIComponent(audioImage)]));
}
if(!/^http/.test(audioImage)) {
this.notifiImg[encodeURIComponent(audioImage)] = audioImage ? audioImage : '_www/static/image/notifimusic.png';
return resolve(plus.io.convertLocalFileSystemURL(audioImage ? audioImage : '_www/static/image/notifimusic.png'));
}
uni.downloadFile({
url: audioImage,
complete: res => {
this.notifiImg[encodeURIComponent(audioImage)] = res.tempFilePath ? res.tempFilePath : '_www/static/image/notifimusic.png';
return resolve(plus.io.convertLocalFileSystemURL(res.tempFilePath ? res.tempFilePath : '_www/static/image/notifimusic.png'));
}
});
});
},
hideNotifi: function(server = false){
this.main&&this.receiver&&this.main.unregisterReceiver(this.receiver);
server&&this.serv&&this.serv.stopForeground&&this.serv.stopForeground(this.NotifyID, this.mNotificationBuild) ;
if (Number(plus.os.version.split('.')[0])>= 8){
this.NotifiService&&this.NotifiService.cancel&&this.NotifiService.cancel(this.channelID,this.NotifyID);
} else {
this.NotifiService&&this.NotifiService.cancel&&this.NotifiService.cancel(this.NotifyID);
}
this.receiver = null;
this.NotifiService = null;
this.serv = null;
this.intent = null;
this.mNotificationBuild = null;
// this.NotifiService&&this.NotifiService.cancelAll&&this.NotifiService.cancelAll();
this.mediaBtn ? this.mediaBtn.release() : ''; // 线控销毁
},
showNotifi:async function(param) {
if (uni.$_sko.systemInfo.platform != 'android') {
return;
}
try{
param = Object.assign({
title : '通知标题',
subTitle: '',
cont : '通知内容',
isPlay: true, // 媒体播放按钮
legIcon : plus.io.convertLocalFileSystemURL('_www/static/image/notifimusic.png'),
Ongoing : false, // 不可删除
},param);
this.main = this.main ? this.main : plus.android.runtimeMainActivity();
var Context = plus.android.importClass("android.content.Context");
var BitmapFactory = plus.android.importClass("android.graphics.BitmapFactory");
var NotificationManager = plus.android.importClass("android.app.NotificationManager");
var Notification = plus.android.importClass("android.app.Notification");;
var Intent = plus.android.importClass("android.content.Intent");
var PendingIntent = plus.android.importClass("android.app.PendingIntent");
var androidR = plus.android.importClass("android.R");
this.NotifiService = this.NotifiService ? this.NotifiService : this.main.getSystemService(Context.NOTIFICATION_SERVICE);
this.intent = this.intent ? this.intent : new Intent(this.main, this.main.getClass());
var UNI_MEDIA_BROAD = this.main.getPackageName() + '.mediaBtn';
//PendingIntent.getActivity的第二个参数需要设置为随机数,否则多个通知时会导致前面的通知被后面的通知替换Extra的数据
var pendingIntent = PendingIntent.getActivity(this.main, 0, this.intent, PendingIntent.FLAG_CANCEL_CURRENT);
var firstVersionNumber = Number(plus.os.version.split('.')[0]);
var mNotification;
//判断当前系统版本在8.0及以上
if (firstVersionNumber >= 8){
if (this.NotifiService.getNotificationChannel() == null){
var NotificationChannel = plus.android.importClass('android.app.NotificationChannel');
var channel = new NotificationChannel(this.channelID, this.channelName, NotificationManager.IMPORTANCE_HIGH);
this.NotifiService.createNotificationChannel(channel);
plus.android.autoCollection(NotificationChannel);
}
param.callBack&&this.main.startForegroundService(this.intent);
mNotification = new Notification.Builder(this.main, this.channelID);
} else {
mNotification = new Notification.Builder(this.main);
param.callBack&&this.main.startService(this.intent);
}
if(param.callBack) {
mNotification.addAction(androidR.drawable.ic_media_previous, "prev", PendingIntent.getBroadcast(this.main, 0, new Intent().setAction(UNI_MEDIA_BROAD + '.prev'), PendingIntent.FLAG_CANCEL_CURRENT));
mNotification.addAction((param.isPlay ? androidR.drawable.ic_media_pause : androidR.drawable.ic_media_play), "play", PendingIntent.getBroadcast(this.main, 0, new Intent().setAction(UNI_MEDIA_BROAD + '.play'), PendingIntent.FLAG_CANCEL_CURRENT));
mNotification.addAction(androidR.drawable.ic_media_next, "next", PendingIntent.getBroadcast(this.main, 0, new Intent().setAction(UNI_MEDIA_BROAD + '.next'), PendingIntent.FLAG_CANCEL_CURRENT));
var mMediaStyle = new Notification.MediaStyle();
mMediaStyle.setShowActionsInCompactView(0, 1, 2);
mNotification.setStyle(mMediaStyle);
}
mNotification.setOngoing(param.Ongoing);
param.legIcon&&mNotification.setLargeIcon(BitmapFactory.decodeFile(await this.getImgTemp(param.legIcon)));
mNotification.setSmallIcon(param.callBack?androidR.drawable.stat_sys_headset:androidR.drawable.stat_notify_chat); //设置图标
mNotification.setContentTitle(param.title);//设置标题
mNotification.setContentText(param.cont); //设置内容
param.subTitle&&mNotification.setSubText(param.subTitle); //子内容暂时去掉
// mNotification.setAutoCancel(true); //设置点击消失
// mNotification.setShowWhen(true); //显示通知时间
mNotification.setTicker("PadInfo"); //弹出通知
mNotification.setDefaults(Notification.DEFAULT_ALL);
// mNotification.setPriority(Notification.PRIORITY_DEFAULT); //通知优先级
// mNotification.flags=Notification.FLAG_ONLY_ALERT_ONCE; //发起通知时震动
mNotification.setContentIntent(pendingIntent);
this.mNotificationBuild = mNotification.build();
if (firstVersionNumber>= 8){
this.NotifiService.notify(this.channelID, this.NotifyID, this.mNotificationBuild);
} else {
this.NotifiService.notify(this.NotifyID, this.mNotificationBuild);
}
if(param.callBack) {
this.main&&this.receiver&&this.main.unregisterReceiver(this.receiver);
this.receiver = this.receiver ? this.receiver : plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function(context, intent) { //实现onReceiver回调函数
param.callBack(intent.getAction().replace(UNI_MEDIA_BROAD + '.',''));
}
});
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
var filter = new IntentFilter();
filter.addAction(UNI_MEDIA_BROAD + '.prev');
filter.addAction(UNI_MEDIA_BROAD + '.play');
filter.addAction(UNI_MEDIA_BROAD + '.next');
this.main.unregisterReceiver(this.receiver);
this.main.registerReceiver(this.receiver, filter); //注册监听
this.mediaBtn = uni.requireNativePlugin('uniMediaButton'); // 监听线控 需要配合附件中的插件( Android API >= 26)
this.mediaBtn.initMediaButton(res => {
console.log(res.message);
// 绑定失败/销毁
if(res.code == '-1') {
this.mediaBtn = null;
return;
}
// res.keyAction == 1 按键松开 res.keyAction == 0 按键按下 播放按钮肯能只有按下
if(res.keyCode && res.keyAction == '0') {
switch (res.keyCode){
case 88:
param.callBack(
'prev'
);
break;
case 87:
param.callBack(
'next'
);
break;
case 127:
case 126:
param.callBack(
'play'
);
break;
}
}
});
var serv = plus.android.importClass("android.app.Service");
this.serv = this.serv ? this.serv : new serv();
this.serv.startForeground(this.NotifyID, this.mNotificationBuild);
plus.android.autoCollection(serv);
plus.android.autoCollection(IntentFilter);
}
plus.android.autoCollection(Context);
plus.android.autoCollection(BitmapFactory);
plus.android.autoCollection(NotificationManager);
plus.android.autoCollection(Notification);
plus.android.autoCollection(Intent);
plus.android.autoCollection(PendingIntent);
plus.android.autoCollection(androidR);
plus.android.autoCollection(this.receiver);
}catch(e){
console.log(e);
}
}
};
使用方法
// 开启 - 更新标题/播放(暂停)按钮
show();
function show(){
androidNotifi.showNotifi({
title : '通知标题',
subTitle: '通知小标题',
cont : '通知内容',
isPlay: true, // 媒体播放按钮状态(控制播放/暂停按钮样式)
legIcon : '', // 封面图片
Ongoing : false, // 是否可删除
callBack:function(res){
switch (res){
case 'play':
console.log('play');
break;
case 'prev':
console.log('prev');
break;
case 'next':
console.log('next');
break;
}
}
})
}
// 关闭
function hide(){
androidNotifi.hideNotifi();
}
由于Android播放视频没有通知栏控制.开始一直使用XZH-musicNotification 的插件,但是由于版本更新,出现BUG(插件已更新).
但是不能总等插件更新,就自己动动手写了一个Native.js版本,由于手上设备不多,没有测试更多的兼容性.在这里希望大家能勇于使用修改提出问题,完善此通知提示!
附件是线控耳机、蓝牙耳机按键监听插件(API >= 26,X86好像不支持忘了)

银联云闪付小程序开发
分享一下我们开发的云闪付小程序PHP后端开发包,unionpay 云闪付小程序开发包
银联云闪付小程序非官方开发包,这可能是第一个支持composer导入的云闪付小程序开发包,小程序后端相关接口与支付相关接口已全部更新完毕。
码云地址:https://gitee.com/leapy/unionpay
Github地址:https://github.com/ileapy/unionpay
vue前端开发包(不建议这样引用)
> npm install upsdk-vue
有需要公众号和小程序开发的可以联系我,我们有团队:
邮箱:cfn@leapy.cn
微信:SH-CFN
分享一下我们开发的云闪付小程序PHP后端开发包,unionpay 云闪付小程序开发包
银联云闪付小程序非官方开发包,这可能是第一个支持composer导入的云闪付小程序开发包,小程序后端相关接口与支付相关接口已全部更新完毕。
码云地址:https://gitee.com/leapy/unionpay
Github地址:https://github.com/ileapy/unionpay
vue前端开发包(不建议这样引用)
> npm install upsdk-vue
有需要公众号和小程序开发的可以联系我,我们有团队:
邮箱:cfn@leapy.cn
微信:SH-CFN

在uniapp中使用Native.js 使用字节流读写文件工具类封装
/**
- @description: gpb文件读写工具 采用Native.js
- @author: Marco
-
@email: wtz_xupt@126.com
*/
export default class GpbFileUtil {
/**-
单例模式 获取实例
*/
static getIntance(){
if(!GpbFileUtil.instance){
GpbFileUtil.instance = new GpbFileUtil()
}return GpbFileUtil.instance
}/**
-
构造函数
*/
constructor(){
this.init()
}/**
-
初始化
*/
init(){
//导入类需要时间,统一导入提高效率
this.main = plus.android.runtimeMainActivity()
this.Environment = plus.android.importClass('android.os.Environment')
this.File = plus.android.importClass('java.io.File')
this.FileInputStream = plus.android.importClass("java.io.FileInputStream")
this.FileOutputStream = plus.android.importClass('java.io.FileOutputStream')
}/**
-
判断有没有插入sdcard
*/
checkSDCardExist(){
if(this.Environment.getExternalStorageState() !== this.Environment.MEDIA_MOUNTED){
return false
}
return true
}/**
-
获取sdcard根路径
*/
getSDCardRoot(){
return this.Environment.getExternalStorageDirectory()
}/**
- 判断sdcard 文件是否存在
- @param {Object} filePath
-
@param {Object} fileName
*/
checkSDCardFileExist(filePath,fileName){
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileName
let file = new this.File(fileFullPath)
return file.exists()
}/**
- 删除sdcard中的文件
- @param {Object} filePath 文件路径
-
@param {Object} fileName 文件名称
*/
deleteSDCardFile(filePath,fileName){
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileNamelet file = new this.File(fileFullPath) if(file.exists()){ file.delete() }
}
/**
- 读取sdcard中文件内容
- @param {Object} filePath 文件路径
-
@param {Object} fileName 文件名称
*/
readFileFromSDCard(filePath,fileName){
if(!this.checkSDCardFileExist(filePath,fileName)){
plus.nativeUI.toast(fileName + '文件不存在!')
return;
}
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileNamelet file = new this.File(fileFullPath)
let fis = new this.FileInputStream(file)
let bytes = new Uint8Array(fis.available())
try{
let index = 0
let byte
while((byte = fis.read()) !== -1){
bytes[index] = byte
++index
}}catch(e){
//TODO handle the exception
console.log('读取sd文件' + fileName + '失败:' + e.message)
}finally{
try{
if(fis !== null){
fis.close()
}
}catch(ex){
//TODO handle the exception
console.log('关闭文件输入流失败:' + ex.message)
}
}return bytes
}/**
- 向sdcard中写文件
- @param {Object} filePath 文件路径
- @param {Object} fileName 文件名称
- @param {Object} fileContentBytes 文件内容字节数组
*/
writeFileToSDCard(filePath,fileName,fileContentBytes){
this.deleteSDCardFile()
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileName
let file = new this.File(fileFullPath)
let fos = new this.FileOutputStream(file)
try{
let index = 0
while(index < fileContentBytes.length){
fos.write(fileContentBytes[index])
++index
}
//fos.write(fileContentBytes) //java byte数组在nativejs中写入不了,只能循环一个一个字节写入
fos.flush()
}catch(e){
//TODO handle the exception
console.log('写入sd文件' + fileName + '失败:' + e.message)
}finally{
try{
if(fos !== null){
fos.close()
}
}catch(ex){
//TODO handle the exception
console.log('关闭文件输出流失败:' + ex.message)
}
}
}
}
-
在测试过程中nativejs 调用java FileInputStream read(byte []) 和write(byte []) 读取和写入不了。尝试循环后每次读取或写入一个字节成功了。
/**
- @description: gpb文件读写工具 采用Native.js
- @author: Marco
-
@email: wtz_xupt@126.com
*/
export default class GpbFileUtil {
/**-
单例模式 获取实例
*/
static getIntance(){
if(!GpbFileUtil.instance){
GpbFileUtil.instance = new GpbFileUtil()
}return GpbFileUtil.instance
}/**
-
构造函数
*/
constructor(){
this.init()
}/**
-
初始化
*/
init(){
//导入类需要时间,统一导入提高效率
this.main = plus.android.runtimeMainActivity()
this.Environment = plus.android.importClass('android.os.Environment')
this.File = plus.android.importClass('java.io.File')
this.FileInputStream = plus.android.importClass("java.io.FileInputStream")
this.FileOutputStream = plus.android.importClass('java.io.FileOutputStream')
}/**
-
判断有没有插入sdcard
*/
checkSDCardExist(){
if(this.Environment.getExternalStorageState() !== this.Environment.MEDIA_MOUNTED){
return false
}
return true
}/**
-
获取sdcard根路径
*/
getSDCardRoot(){
return this.Environment.getExternalStorageDirectory()
}/**
- 判断sdcard 文件是否存在
- @param {Object} filePath
-
@param {Object} fileName
*/
checkSDCardFileExist(filePath,fileName){
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileName
let file = new this.File(fileFullPath)
return file.exists()
}/**
- 删除sdcard中的文件
- @param {Object} filePath 文件路径
-
@param {Object} fileName 文件名称
*/
deleteSDCardFile(filePath,fileName){
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileNamelet file = new this.File(fileFullPath) if(file.exists()){ file.delete() }
}
/**
- 读取sdcard中文件内容
- @param {Object} filePath 文件路径
-
@param {Object} fileName 文件名称
*/
readFileFromSDCard(filePath,fileName){
if(!this.checkSDCardFileExist(filePath,fileName)){
plus.nativeUI.toast(fileName + '文件不存在!')
return;
}
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileNamelet file = new this.File(fileFullPath)
let fis = new this.FileInputStream(file)
let bytes = new Uint8Array(fis.available())
try{
let index = 0
let byte
while((byte = fis.read()) !== -1){
bytes[index] = byte
++index
}}catch(e){
//TODO handle the exception
console.log('读取sd文件' + fileName + '失败:' + e.message)
}finally{
try{
if(fis !== null){
fis.close()
}
}catch(ex){
//TODO handle the exception
console.log('关闭文件输入流失败:' + ex.message)
}
}return bytes
}/**
- 向sdcard中写文件
- @param {Object} filePath 文件路径
- @param {Object} fileName 文件名称
- @param {Object} fileContentBytes 文件内容字节数组
*/
writeFileToSDCard(filePath,fileName,fileContentBytes){
this.deleteSDCardFile()
let fileFullPath = this.getSDCardRoot() + this.File.separator + filePath + this.File.separator + fileName
let file = new this.File(fileFullPath)
let fos = new this.FileOutputStream(file)
try{
let index = 0
while(index < fileContentBytes.length){
fos.write(fileContentBytes[index])
++index
}
//fos.write(fileContentBytes) //java byte数组在nativejs中写入不了,只能循环一个一个字节写入
fos.flush()
}catch(e){
//TODO handle the exception
console.log('写入sd文件' + fileName + '失败:' + e.message)
}finally{
try{
if(fos !== null){
fos.close()
}
}catch(ex){
//TODO handle the exception
console.log('关闭文件输出流失败:' + ex.message)
}
}
}
}
-
在测试过程中nativejs 调用java FileInputStream read(byte []) 和write(byte []) 读取和写入不了。尝试循环后每次读取或写入一个字节成功了。
收起阅读 »
Android平台各功能模块隐私合规协议
请根据App集成的功能模块补充相应模块的隐私协议
uni-app(5+、web2app)
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:15%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接/官网</th>
</tr>
<tr>
<td>uni-app(5+、web2app)</td>
<td>io.dcloud</td>
<td>基础模块</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG<br>
android.permission.READ_PHONE_STATE
</td>
<td>存储的个人文件,设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI),网络信息</td>
<td><a href="https://dcloud.io/license/appprivacy.html" target="_blank">https://dcloud.io/license/appprivacy.html</a></td>
</tr>
</table>
注意
- 基础模块使用的权限说明及权限删减配置请参考文章Android平台云端打包权限配置
- 离线打包请自行在
AndroidManifest.xml
中删减权限。 - 关于
READ_PHONE_STATE
权限申请可根据权限策略文档配置屏蔽权限申请行为,具体请认真阅读文档!
uni-app默认集成功能模块
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:15%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接/官网</th>
</tr>
<tr>
<td>阿里weexSDK</td>
<td>com.taobao</td>
<td>uni-app基础模块默认集成,用于渲染uniapp的nvue页面引擎</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储的个人文件</td>
<td><a href="https://weexapp.com/zh/" target="_blank">https://weexapp.com/zh/</a></td>
</tr>
<tr>
<td>Fresco图库</td>
<td>com.facebook.fresco</td>
<td>用于nvue页面加载图片使用</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储的个人文件</td>
<td><a href="https://www.fresco-cn.org/" target="_blank">https://www.fresco-cn.org/</a></td>
</tr>
<tr>
<td>glide图库</td>
<td>com.bumptech.glide</td>
<td>用于图片预览使用</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储的个人文件</td>
<td><a href="http://bumptech.github.io/glide/" target="_blank">http://bumptech.github.io/glide/</a></td>
</tr>
<tr>
<td>gif-drawable</td>
<td>pl.droidsonroids.gif</td>
<td>加载gif图</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储文件</td>
<td><a href="https://github.com/alibaba/fastjson" target="_blank">https://github.com/koral--/android-gif-drawable</a></td>
</tr>
<tr>
<td>fastjson</td>
<td>com.alibaba.fastjson</td>
<td>JSON解析</td>
<td style="font-size:12px">
无
</td>
<td>无</td>
<td><a href="https://github.com/alibaba/fastjson" target="_blank">https://github.com/alibaba/fastjson</a></td>
</tr>
<tr>
<td>移动安全联盟 OAID</td>
<td>com.bun.miitmdid、com.zui.opendeviceidlibrary、com.netease.nis、com.samsung.android、com.huawei.hms</td>
<td>获取oaid</td>
<td style="font-size:12px">
无
</td>
<td>设备信息</td>
<td><a href="http://www.msa-alliance.cn/col.jsp?id=122" target="_blank">http://www.msa-alliance.cn/col.jsp?id=122</a></td>
</tr>
</table>
关于移动安全联盟 OAID
移动智能终端补充设备标识体系与 SDK 隐私合规问题
移动智能终端补充设备标识体系与 SDK 严格遵守我国《网络安全法》、《数据安全法》和《电信和互联网用户个人信息保护规定》等相关法律法规和《信息安全技术 个人信息安全规范》等国家标准要求。SDK 不会主动收集任何数据,只在 APP 调用时获取以下数据,用于本地判断,不会进行任何网络传输:
- 设备制造商、设备型号、设备品牌,用于判断终端调用接口
- 设备网络运营商名称,用于判断虚拟机环境
- APP 包名,用于校验签名
UniPush
<a id="push"></a>
UniPush是DCloud联合个推公司推出的集成型统一推送服务,使用了个推提供的SDK,因此需要在《隐私政策》中添加“个推消息推送SDK”相关说明。
建议《隐私政策》添加 “与授权合作伙伴共享”条款中,将 个推的用户隐私政策 加入其中,并向终端用户逐一明示您嵌入的SDK收集使用个人信息的目的、方式和范围。参考内容如下:
UniPush模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>个推·消息推送</td>
<td>com.igexin</td>
<td>消息推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.VIBRATE<br>
android.permission.GET_TASKS<br>
android.permission.QUERY_ALL_PACKAGES
</td>
<td>存储的个人文件、设备信息、网络信息(必选信息:设备平台、设备厂商、设备品牌、设备型号及系统版本、OAID、AndroidID、WIFI连接信息(SSID、BSSID)、运营商信息、DHCP;可选信息:IMEI、MAC、Google Advertising ID(GAID)、Serial Number、IMSI、ICCID、IP地址、基站信息)、位置相关信息、已安装应用列表</td>
<td><a href="http://docs.getui.com/privacy" target="_blank">http://docs.getui.com/privacy</a></td>
</tr>
</table>
注意:unipush 配置了华为厂商推送,需要添加HMS相关隐私协议 需要注意
HMS push
推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道。您通过集成推送服务,可以向客户端应用实时推送消息,因此需要在《隐私政策》中添加"HMS push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>华为 HMS push</td>
<td>com.huawei.hms</td>
<td>华为手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.REQUEST_INSTALL_PACKAGES<br>
android.permission.FOREGROUND_SERVICE<br>
android.permission.READ_PHONE_STATE
</td>
<td>设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI)、应用已安装列表、网络信息</td>
<td><a href="https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/sdk-data-security-0000001050042177" target="_blank">推送隐私声明</a></td>
</tr>
</table>
魅族 Flyme push
魅族推送服务是由魅族公司为开发者提供的消息推送服务,开发者可以向集成了魅族pushSDK的客户端实时地推送通知或者消息,与用户保持互动,提高活跃率,因此需要在《隐私政策》中添加"Flyme push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>魅族 Flyme push</td>
<td>com.meizu.cloud</td>
<td>魅族手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
android.permission.WRITE_EXTERNAL_STORAGE
</td>
<td>网络信息、存储的个人文件</td>
<td><a href="http://static.meizu.com/resources/term/privacy8.html" target="_blank">推送隐私声明</a></td>
</tr>
</table>
OPPO push
推送服务(OPPO PUSH)是OPPO公司向开发者提供的消息推送服务,通过服务端与OS端建立的一条稳定、可靠的长连接通道,向OPPO手机系统(ColorOS)上的APP应用客户端实时推送消息的服务。无论应用进程是否存在,均可正常收到消息。因此需要在《隐私政策》中添加"OPPO push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>OPPO push</td>
<td>com.heytap</td>
<td>OPPO手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>网络信息</td>
<td><a href="https://open.oppomobile.com/new/developmentDoc/info?id=10288" target="_blank">推送隐私声明</a></td>
</tr>
</table>
vivo push
vivo推送(即Vpush)是vivo公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定、可靠的长连接,为开发者提供向客户端应用实时推送消息的服务,支持百亿级的通知/消息推送,秒级触达移动用户,因此需要在《隐私政策》中添加"vivo push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>vivo push</td>
<td>com.vivo.push</td>
<td>vivo手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET
</td>
<td>网络信息</td>
<td><a href="https://dev.vivo.com.cn/documentCenter/doc/652#w1-12075822" target="_blank">推送隐私声明</a></td>
</tr>
</table>
小米 MiPush
小米推送(MiPush)是小米公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定、可靠的长连接,为开发者提供向客户端应用实时推送消息的服务,有效地帮助开发者触达用户,提升App活跃度,因此需要在《隐私政策》中添加"小米 push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>MiPush</td>
<td>com.xiaomi.push</td>
<td>小米手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.VIBRATE
</td>
<td>网络信息</td>
<td><a href="https://dev.mi.com/distribute/doc/details?pId=1534" target="_blank">推送隐私声明</a></td>
</tr>
</table>
Statistic
<a id="statistic"></a>
HX3.1.14+ 友盟SDK已升级到9.3.8版本 适配合规问题
- 当你集成了统计模块。您需要确保App有《隐私政策》,并且在用户首次启动App时就弹出《隐私政策》取得用户同意!!!
- 您务必告知用户您选择友盟+SDK服务,请在《隐私政策》中增加如下参考条款:“我们的产品集成友盟+SDK,友盟+SDK需要收集您的设备Mac地址、唯一设备识别码(IMEI/android ID/IDFA/OPENUDID/GUID、SIM 卡 IMSI 信息)以提供统计分析服务,并通过地理位置校准报表数据准确性,提供基础反作弊能力。”
- 您务必确保用户同意《隐私政策》之后。再调用相关api!!!!
Statistic模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>友盟统计</td>
<td>com.uc.crashsdk、com.efs、com.umeng</td>
<td>统计(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE
</td>
<td>设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI)、应用已安装列表、网络信息</td>
<td><a href="https://www.umeng.com/page/policy" target="_blank">https://www.umeng.com/page/policy</a></td>
</tr>
</table>
OAuth、Share、Payment
<a id="oauth"/>
<a id="payment"/>
<a id="share"/>
登录、分享、支付存在引入相同SDK,这里统一进行说明:
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>微信开放平台</td>
<td>com.tencent.mm</td>
<td>登录、分享、支付(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>存储的个人文件、网络信息</td>
<td><a href="https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy" target="_blank">微信隐私协议</a></td>
</tr>
<tr>
<td>新浪开放平台</td>
<td>com.sina.weibo</td>
<td>登录、分享(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>存储的个人文件、网络信息</td>
<td><a href="https://weibo.com/signup/v5/privacy?spm=a1zaa.8161610.0.0.4f8776217Wu8R1" target="_blank">新浪隐私协议</a></td>
</tr>
<tr>
<td>QQ开放平台</td>
<td>com.tencent.open</td>
<td>登录、分享(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.MODIFY_AUDIO_SETTINGS<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>存储的个人文件、读取手机状态和身份、网络信息</td>
<td><a href="https://wiki.connect.qq.com/qq%e4%ba%92%e8%81%94sdk%e9%9a%90%e7%a7%81%e4%bf%9d%e6%8a%a4%e5%a3%b0%e6%98%8e" target="_blank">qq隐私协议</a></td>
</tr>
<tr>
<td>支付宝开放平台</td>
<td>com.alipay</td>
<td>支付(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>网络信息 设备id IP地址 OAID IMSI</td>
<td><a href="https://render.alipay.com/p/c/k2cx0tg8" target="_blank">支付宝隐私协议</a></td>
</tr>
</table>
一键登录
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>个验一键登录</td>
<td>com.g.elogin、com.g.gysdk、cn.com.chinatelecom</td>
<td>登录(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.READ_PHONE_STATE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_NETWORK_STATE
</td>
<td>设备信息、网络信息(必选信息:设备平台、设备厂商、设备品牌、设备型号及系统版本、OAID、AndroidID、WIFI连接信息(SSID、BSSID)、运营商信息、DHCP、IP地址、去标识化的手机号码;可选信息:IMEI、MAC、Google Advertising ID(GAID)、Serial Number、IMSI、ICCID、基站信息)、存储的个人文件、读取手机状态和身份、位置相关信息、已安装应用列表</td>
<td> <a href="https://docs.getui.com/privacy/" target="_blank">个验</a> <br><a href="https://wap.cmpassport.com/resources/html/contract.html" target="_blank">中国移动认证服务条款</a><br>
<a href="https://opencloud.wostore.cn/authz/resource/html/disclaimer.html?fromsdk=true" target="_blank">联通统一认证服务条款</a>
</td>
</tr>
</table>
一键登录包含以下登录认证需要在隐私协议中补充
- 天翼认证 隐私协议:天翼账号服务与隐私协议
- 中国移动认证 隐私协议:中国移动认证服务条款
- 联通统一认证 隐私协议:联通统一认证服务条款
Speech
<a id="speech"/>
Speech模块集成的三方SDK说明
百度语音
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>百度语音识别</td>
<td>com.baidu.speech</td>
<td>语音识别(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.RECORD_AUDIO<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_NETWORK_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE
</td>
<td>存储的个人文件、读取手机状态和身份、网络信息</td>
<td><a href="https://ai.baidu.com/ai-doc/REFERENCE/Qkdykq1r3" target="_blank">https://ai.baidu.com/ai-doc/REFERENCE/Qkdykq1r3</a></td>
</tr>
</table>
Map & Geolocation
<a id="map-amp-geolocation"/>
Map & Geolocation模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>高德开放平台</td>
<td>com.amap.api, com.loc, com.autonavi</td>
<td>实现定位/展现地图(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_COARSE_LOCATION<br>
android.permission.ACCESS_FINE_LOCATION<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
</td>
<td>存储的个人文件、位置信息、读取手机状态和身份、网络信息、传感器信息、Android ID</td>
<td><a href="https://lbs.amap.com/pages/privacy/" target="_blank">https://lbs.amap.com/pages/privacy/</a></td>
</tr>
<tr>
<td>百度开放平台</td>
<td>com.baidu</td>
<td>实现定位/展现地图(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_COARSE_LOCATION<br>
android.permission.ACCESS_FINE_LOCATION<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS<br>
android.permission.READ_LOGS<br>
android.permission.WRITE_SETTINGS<br>
android.permission.MOUNT_UNMOUNT_FILESYSTEM
</td>
<td>存储的个人文件、位置信息、读取手机状态和身份、网络信息</td>
<td><a href="https://map.baidu.com/zt/client/privacy/index.html" target="_blank">https://map.baidu.com/zt/client/privacy/index.html</a></td>
</tr>
</table>
注意
- 关于高德SDK在后台收集个人信息的问题,请在《隐私政策》中参考补充如下条款:我们的产品集成了高德SDK,应用在后台状态下高德SDK可能会收集设备标识信息(Android ID)以支持在后台继续提供相关服务。
uni-ad
<a id="uniAd"/>
uni-ad广告模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:8%">SDK名称</th>
<th style="width:10%">SDK包名/网址</th>
<th style="width:8%">SDK用途</th>
<th style="width:20%">可能获取的个人信息类型</th>
<th style="width:25%">调用的设备权限</th>
<th style="width:20%">信息用途</th>
<th style="width:10%">SDK隐私政策链接/目的</th>
</tr>
<tr>
<td>uni-ad</td>
<td></td>
<td>基础广告 </td>
<td style="font-size:12px">设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息 </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_COARSE_LOCATION
</td>
<td>广告投放合作,广告归因、反作弊、安全 </td>
<td><a href="https://doc.dcloud.net.cn/markdown-share-docs/1d821cdd3cdf2681045ec4be94bc8404/" target="_blank">隐私协议</a></td>
</tr>
<tr>
<td>推啊 </td>
<td> engine.tuifish.com </td>
<td>基础广告 </td>
<td style="font-size:12px">设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息 </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_COARSE_LOCATION
</td>
<td style="font-size:12px">识别广告、活动作弊行为;改善 SDK 崩溃率、推送个性化广告;广告投放。 </td>
<td><a href= "https://yun.tuia.cn/tuia/sdk/agreement/index.html" target="_blank">推啊隐私协议</a></td>
</tr>
<tr>
<td>快手 </td>
<td>com.kwad.sdk </td>
<td>增强广告 </td>
<td>基础信息:设备品牌、设备型号、软件系统版本、存储信息、运营商信息、设备时区、设备语言、网络信息等基础信息</br>
设备标识:IMEIs、MEID、OAID、AndroidID、IMSIs、ICCID</br>
位置信息:IP地址、MAC地址、GPS位置信息、基站信息、WIFI信息</br>
应用信息:应用安装列表</br>
其他信息:传感器信息、sim卡激活信息</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.INTERNET <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.VIBRATE
</td>
<td>广告投放、广告归因、反作弊、安全 </td>
<td><a href="https://www.kuaishou.com/about/policy" target="_blank">快手内容联盟隐私协议</a>和<a href="https://u.kuaishou.com/home/detail/1220" target="_blank">SDK使用规范</a></td>
</tr>
<tr>
<td>快手内容联盟 </td>
<td>com.kwad.sdk </td>
<td>增强广告 </td>
<td>基础信息:设备品牌、设备型号、软件系统版本、存储信息、运营商信息、设备时区、设备语言、网络信息等基础信息</br>
设备标识:IMEIs、MEID、OAID、AndroidID、IMSIs、ICCID</br>
位置信息:IP地址、MAC地址、GPS位置信息、基站信息、WIFI信息</br>
应用信息:应用安装列表</br>
其他信息:传感器信息、sim卡激活信息 </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.INTERNET <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.VIBRATE <br>
android.permission.SET_WALLPAPER<br>
android.permission.READ_EXTERNAL_STORAGE <br>
android.permission.WRITE_EXTERNAL_STORAGE <br>
android.permission.ACCESS_COARSE_LOCATION <br>
android.permission.BLUETOOTH
</td>
<td>广告投放、广告归因、反作弊、安全 </td>
<td><a href="https://www.kuaishou.com/about/policy" target="_blank">快手内容联盟隐私协议</a>和<a href="https://u.kuaishou.com/home/detail/1220" target="_blank">SDK使用规范</a></td>
</tr>
<tr>
<td>优量汇 </td>
<td>com.qq.e </td>
<td>增强广告 </td>
<td>基站、附近的WIFI、连接的WIFI、位置信息、设备制造商、设备型号、操作系统版本、屏幕分辨率、屏幕方向、屏幕DPI、IP地址、加速度传感器、磁场传感器、OAID、IMEI/MEID(Device ID)、Android_ID、包名、版本号、进程名称、运行状态、可疑行为、应用安装信息 </td>
<td style="font-size:12px">
android.permission.INTERNET <br>
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.CHANGE_NETWORK_STATE<br>
android.permission.QUERY_ALL_PACKAGES <br>
android.permission.REORDER_TASKS<br>
android.permission.VIBRATE <br>
android.permission.ACCESS_COARSE_LOCATION
</td>
<td style="font-size:12px">广告投放与监测归因、广告主统计投放结果、减少App崩溃、确保服务器正常运行、提升可扩展性和性能</td>
<td><a href="https://e.qq.com/dev/help_detail.html?cid=2005&pid=5983" target="_blank">优量汇隐私协议</a></td>
</tr>
<tr>
<td>穿山甲 </td>
<td>com.bytedance.sdk.openadsdk</td>
<td>增强广告 </td>
<td>设备品牌、型号、软件系统版本、屏幕密度、屏幕分辨率、设备语言、设备时区、sim卡信息(mcc&mnc)、CPU信息、可用存储空间大小、MAC地址、设备标识符(如IMEI、IMSI、ICCID、GAID(仅GMS服务)、MEID、硬件序列号build_serial、AndroidID、OAID、运营商信息、Wi-Fi状态、网络信号强度、IP地址、应用包名、运行中的进程信息、版本号、应用前后台状态、软件列表信息、线性加速度传感器、磁场传感器、旋转矢量传感器、精确位置信息、粗略位置信息(WiFi列表、WLAN接入点(如SSID,BSSID)、基站) </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.WRITE_EXTERNAL_STORAGE
</td>
<td>广告投放合作、广告归因、反作弊 </td>
<td><a href="https://www.pangle.cn/privacy/partner" target="_blank">穿山甲隐私协议</a></td>
</tr>
<tr>
<td>Sigmob </td>
<td>com.sigmob.windad </td>
<td>增强广告 </td>
<td>设备信息:设备品牌、型号、操作系统版本、OAID、分辨率等基础设备信息
应用信息:应用名称、应用包名、应用版本号等
其他:运营商信息、时区</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.INTERNET <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.CHANGE_WIFI_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.QUERY_ALL_PACKAGES
</td>
<td>广告投放、广告主归因、反作弊 </td>
<td><a href="https://doc.sigmob.com/Sigmob%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E5%90%88%E8%A7%84%E6%9D%A1%E6%AC%BE/%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96/">Sigmob隐私协议</a></td>
</tr>
<tr>
<td>百度百青藤</td>
<td>com.baidu.mobads.proxy </td>
<td>增强广告 </td>
<td>设备信息:设备品牌、型号、软件系统版本、分辨率、网络信号强度、传感器信息,磁盘总空间、系统总内存空间、手机重启信息、手机系统更新时间等基础信息、OAID、AndroidID、屏幕宽高,屏幕像素密度,系统版本号,设备厂商,设备型号,手机运营商,手机网络状态,设备剩余存储空间,手机重启时间和更新时间
开发者应用信息:应用包名、应用前后台状态
设备信息:IMEI、IMSI、MEID
位置信息</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.ACCESS_COARSE_LOCATION<br>
android.permissio.WRITE_EXTERNAL_STORAGE<br>
</td>
<td>为最终用户提供安全保障、改善我们的产品和服务,开展内部审计、数据分析和研究 </td>
<td><a href="https://union.baidu.com/bqt/#/legal/policies">百度百青藤隐私协议</a></td>
</tr>
<tr>
<td>HUAWEI Ads</td>
<td>com.huawei.hms.ads.lite</td>
<td>增强广告 </td>
<td>设备信息、网络信息、位置信息、应用信息、应用使用信息、上下文信息</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
</td>
<td>单次请求的广告定向投放、程序化广告投放、广告监测归因与反作弊。</td>
<td><a href="https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/whale-hong-kinetic-energy-sdk-privacy-statement-0000001658283582">HUAWEI Ads 隐私声明</a><br><br>和<br><br><a href="https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/whale-hong-kinetic-sdk-compliance-user-guide-0000001658442922">HUAWEI Ads SDK隐私安全说明</a></td>
</tr>
<tr>
<td>章鱼广告</td>
<td>com.octopus.ad</td>
<td>增强广告 </td>
<td>设备品牌、设备型号、设备时区、设备语言、系统版本、开发者应用名、应用版本号、应用包名、网络类型、UserAgent信息、网络状态、崩溃信息、性能数据、屏幕高宽、屏幕方向、屏幕DPI信息、系统更新时间、开机时间、磁盘空间、物理内存、设备ID(OAID、GAID)、IMEI 用户授权才收集、USB调试模式、cpu、运行状态、运营商、传感器信息、掠过手势内容</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
</td>
<td>基于用户设备信息调整广告投放、统计分析、反作弊、实现广告正常显示与交互功能,通过崩溃信息,以此来优化代码缺陷,最大程度减少App崩溃。通过收集SDK运行过程中性能数据,以优化SDK的性能。统计广告数据,以用于广告主统计投放结果。</td>
<td><a href="https://doc.adintl.cn/#/zh-cn/guide/UsePrivacy">章鱼广告SDK隐私政策</a></td>
</tr>
<tr>
<td>倍孜广告</td>
<td>com.beizi.ad</td>
<td>增强广告 </td>
<td>设备品牌、设备型号、设备时区、设备语言、系统版本、网络类型、UserAgent信息、屏幕高宽、屏幕方向、屏幕DPI信息、系统更新时间、开机时间、磁盘空间、物理内存、运营商、sim卡状态、传感器信息、掠过手势内容、cpu、设备ID(国内用户OAID、海外用户GAID)、开发者应用名、应用版本号、应用包名、运行状态、使用数据、诊断数据</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
</td>
<td>广告投放策略、统计分析服务、反作弊分析、广告正常显示与交互功能的实现、广告归因、最大程度减少App崩溃、确保服务器正常运行、提升可扩展性和性能</td>
<td><a href="https://sdkdoc.beizi.biz/#/zh-cn/guide/UsePrivacy">BeiZi SDK隐私保护声明</a></td>
</tr>
<tr>
<td>泛连</td>
<td>com.fl.saas.s2s</td>
<td>增强广告 </td>
<td>设备品牌、型号、软件系统版本、屏幕密度、屏幕分辨率、设备语言、设备时区、IMEI、IMSI、ICCID、GAID、MEID、IDFA、IDFV、AndroidID、OAID、手机系统重启时间、设备的MAC地址、User Agent、IP地址、运营商信息、Wi-Fi状态、网络信号强度、应用版本、应用包名、应用名称、应用前后台状态、应用列表信息、加速度传感器、陀螺仪传感器、广告的展示、点击及转化等交互数据、系统崩溃数据、性能数据</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.VIBRATE<br>
android.permission.REQUEST_INSTALL_PACKAGES<br>
android.permission.READ_PHONE_STATE<br/>
</td>
<td>广告投放及广告监测归因、反作弊、摇一摇广告投放、广告投放统计分析、提升SDK的稳定性,减少APP的崩溃</td>
<td><a href="https://www.adfunlink.com/doc/privacy.html">Funlink隐私保护声明</a></td>
</tr>
<tr>
<td>聚力阅盟</td>
<td>com.dcloudym</td>
<td>增强广告 </td>
<td>设备型号、操作系统版本、唯一设备标识符、设备环境等软硬件特征信息;GPS位置以及WLAN接入点、蓝牙和基站等传感器信息</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.VIBRATE<br>
android.permission.REQUEST_INSTALL_PACKAGES<br>
android.permission.READ_PHONE_STATE<br/>
android.permission.WRITE_EXTERNAL_STORAGE<br/>
android.permission.ACCESS_COARSE_LOCATION<br/>
android.permission.ACCESS_FINE_LOCATION<br/>
</td>
<td>广告投放及广告监测归因、反作弊、摇一摇广告投放</td>
<td><a href="https://idbj.juliyuemeng.com/privacy">聚力阅盟隐私保护声明</a></td>
</tr>
<tr>
<td>华夏乐游(优推广告)</td>
<td>com.alliance.ssp.ad</td>
<td>增强广告 </td>
<td>设备信息: 必选信息:设备品牌、型号、软件系统版本、屏幕密度、屏幕分辨率、设备语言、设备时区等基础信息 【仅iOS】磁盘总空间、系统总内存空间; 可选信息:设备MAC地址、设备标识符(如IMEI、MEID,具体字段因软硬件版本不同而存在差异)如AndroidID、OAID、IMSI、IMEI、MEID 等。网络信息: 必选信息:运营商信息、网络状态(包括BSSID、SSID 等)、IP地址。应用信息 :必选信息:应用包名、版本号;可选信息:应用安装列表信息。传感器信息:必选信息:加速度传感器。广告信息: 必选信息:对广告的填充、展示、点击及转化等交互数据。位置信息: 可选信息:精确位置信息。性能数据: 必选信息:如崩溃数据、性能数据</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br/>
android.permission.INTERNET<br/>
android.permission.READ_PHONE_STATE<br/>
android.permission.ACCESS_WIFI_STATE<br/>
android.permission.REQUEST_INSTALL_PACKAGES<br/>
android.permission.ACCESS_FINE_LOCATION<br/>
android.permission.ACCESS_COARSE_LOCATION<br/>
android.permission.READ_EXTERNAL_STORAGE<br/>
android.permission.WRITE_EXTERNAL_STORAGE<br/>
android.permission.QUERY_ALL_PACKAGES<br/>
</td>
<td>广告投放及广告反作弊。广告监测归因。保证网络服务有效性及稳定性。摇一摇、扭一扭功能。减少App崩溃、提供稳定可靠的服务</td>
<td><a href="https://lemon.gameley.com/flowdocs/%E4%BC%98%E6%8E%A8%E5%B9%BF%E5%91%8A%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E9%9A%90%E7%A7%81%E5%8D%8F%E8%AE%AE/%E4%BC%98%E6%8E%A8%E5%B9%BF%E5%91%8A%E5%B9%B3%E5%8F%B0SDK%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96.html">优推广告平台 SDK 隐私政策</a></td>
</tr>
</table>
腾讯x5内核
<a id="e885bee8aeafx5e58685e6a0b8"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>腾讯浏览服务SDK</td>
<td>com.tencent.tbs、com.tencent.smtt</td>
<td>x5内核渲染webview(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE
</td>
<td>存储的个人文件、读取手机状态和身份、网络信息</td>
<td><a href="https://x5.tencent.com/docs/privacy.html" target="_blank">https://x5.tencent.com/docs/privacy.html</a></td>
</tr>
</table>
Contacts
<a id="Contacts"/>
管理系统通讯录,用于可对系统通讯录进行增、删、改、查等操作。通过plus.contacts获取系统通讯录管理对象。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>Contacts</td>
<td>io.dcloud.feature.contacts</td>
<td>管理系统通讯录,用于可对系统通讯录进行增、删、改、查等操作(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.GET_ACCOUNTS<br>
android.permission.WRITE_CONTACTS<br>
android.permission.READ_CONTACTS
</td>
<td>获取联系人信息</td>
<td style="font-size:12px">(宿主根据APP自身逻辑 自行填写相关隐私政策信息)</td>
</tr>
</table>
Messaging
<a id="Messaging"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>Messaging</td>
<td>io.dcloud.feature.messagings</td>
<td>管理设备通讯功能,可用于短信、彩信、邮件发送等(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.RECEIVE_SMS<br>
android.permission.SEND_SMS<br>
android.permission.WRITE_SMS<br>
android.permission.READ_SMS
</td>
<td>读写短信、彩信、邮件</td>
<td style="font-size:12px">(宿主根据APP自身逻辑 自行填写相关隐私政策信息)</td>
</tr>
</table>
Bluetooth(低功耗蓝牙)
<a id="Bluetooth"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>Bluetooth</td>
<td>io.dcloud.feature.bluetooth</td>
<td>访问蓝牙设备,包括搜索、连接。(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_FINE_LOCATION<br>
android.permission.ACCESS_COARSE_LOCATION<br>
android.permission.BLUETOOTH<br>
android.permission.BLUETOOTH_ADMIN<br><br>
以下两种权限在targetSdkVersion31及以上才需要!<br>
android.permission.BLUETOOTH_SCAN<br>
android.permission.BLUETOOTH_CONNECT
</td>
<td>访问蓝牙设备、位置信息。</td>
<td style="font-size:12px">(宿主根据APP自身逻辑 自行填写相关隐私政策信息)</td>
</tr>
</table>
FacialRecognitionVerify(实人认证)
<a id="FacialRecognitionVerify"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>实人认证</td>
<td>com.dtf.face.verify</td>
<td>实人认证服务搭载真人检测和人脸比对等生物识别技术,配合权威数据源验证,可快速校验自然人的真实身份。</td>
<td style="font-size:12px">
android.permission.READ_PHONE_STATE<br>
android.permission.INTERNET<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.CAMERA<br>
</td>
<td>设备信息、最终用户上传的语音、图片信息、终端权限信息、日志信息</td>
<td style="font-size:12px"><a href="https://terms.aliyun.com/legal-agreement/terms/suit_bu1_ali_cloud/suit_bu1_ali_cloud202107281509_18386.html" target="_blank">https://terms.aliyun.com/legal-agreement/terms/suit_bu1_ali_cloud/suit_bu1_ali_cloud202107281509_18386.html</a></td>
</tr>
</table>
如果您的应用使用了依赖三方SDK的模块也需要将其合规条款添加到《隐私政策》中
uni原生插件
如果应用使用了uni原生插件,需要注意一下几点:
- 使用插件时请查看插件详情页面中的
隐私、权限声明
。(插件使用什么sdk?获取了什么用户信息?都应由插件作者提供并填写在隐私、权限声明
中) - 将插件中用到的三方SDK信息添加到用户隐私协议中。例如集成了
百度定位
。就需要在隐私协议中说明集成了百度定位SDK。获取了xxx用户信息!用于xxx. - 如果发现插件有获取用户信息而插件详情页并没有提供
隐私、权限声明
,请与插件开发者或与我们反馈共同督促进行补充。
其它
《隐私政策》必须非常清楚、全面地说明(不要用可能收集、了解用户信息这种模糊不清晰的词语)收集用户个人信息的目的、方式和范围。
如果应用使用“通讯录”、“短信”等相关功能,请根据应用业务场景进行描述。
请根据App集成的功能模块补充相应模块的隐私协议
uni-app(5+、web2app)
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:15%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接/官网</th>
</tr>
<tr>
<td>uni-app(5+、web2app)</td>
<td>io.dcloud</td>
<td>基础模块</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG<br>
android.permission.READ_PHONE_STATE
</td>
<td>存储的个人文件,设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI),网络信息</td>
<td><a href="https://dcloud.io/license/appprivacy.html" target="_blank">https://dcloud.io/license/appprivacy.html</a></td>
</tr>
</table>
注意
- 基础模块使用的权限说明及权限删减配置请参考文章Android平台云端打包权限配置
- 离线打包请自行在
AndroidManifest.xml
中删减权限。 - 关于
READ_PHONE_STATE
权限申请可根据权限策略文档配置屏蔽权限申请行为,具体请认真阅读文档!
uni-app默认集成功能模块
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:15%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接/官网</th>
</tr>
<tr>
<td>阿里weexSDK</td>
<td>com.taobao</td>
<td>uni-app基础模块默认集成,用于渲染uniapp的nvue页面引擎</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储的个人文件</td>
<td><a href="https://weexapp.com/zh/" target="_blank">https://weexapp.com/zh/</a></td>
</tr>
<tr>
<td>Fresco图库</td>
<td>com.facebook.fresco</td>
<td>用于nvue页面加载图片使用</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储的个人文件</td>
<td><a href="https://www.fresco-cn.org/" target="_blank">https://www.fresco-cn.org/</a></td>
</tr>
<tr>
<td>glide图库</td>
<td>com.bumptech.glide</td>
<td>用于图片预览使用</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储的个人文件</td>
<td><a href="http://bumptech.github.io/glide/" target="_blank">http://bumptech.github.io/glide/</a></td>
</tr>
<tr>
<td>gif-drawable</td>
<td>pl.droidsonroids.gif</td>
<td>加载gif图</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAG
</td>
<td>存储文件</td>
<td><a href="https://github.com/alibaba/fastjson" target="_blank">https://github.com/koral--/android-gif-drawable</a></td>
</tr>
<tr>
<td>fastjson</td>
<td>com.alibaba.fastjson</td>
<td>JSON解析</td>
<td style="font-size:12px">
无
</td>
<td>无</td>
<td><a href="https://github.com/alibaba/fastjson" target="_blank">https://github.com/alibaba/fastjson</a></td>
</tr>
<tr>
<td>移动安全联盟 OAID</td>
<td>com.bun.miitmdid、com.zui.opendeviceidlibrary、com.netease.nis、com.samsung.android、com.huawei.hms</td>
<td>获取oaid</td>
<td style="font-size:12px">
无
</td>
<td>设备信息</td>
<td><a href="http://www.msa-alliance.cn/col.jsp?id=122" target="_blank">http://www.msa-alliance.cn/col.jsp?id=122</a></td>
</tr>
</table>
关于移动安全联盟 OAID
移动智能终端补充设备标识体系与 SDK 隐私合规问题
移动智能终端补充设备标识体系与 SDK 严格遵守我国《网络安全法》、《数据安全法》和《电信和互联网用户个人信息保护规定》等相关法律法规和《信息安全技术 个人信息安全规范》等国家标准要求。SDK 不会主动收集任何数据,只在 APP 调用时获取以下数据,用于本地判断,不会进行任何网络传输:
- 设备制造商、设备型号、设备品牌,用于判断终端调用接口
- 设备网络运营商名称,用于判断虚拟机环境
- APP 包名,用于校验签名
UniPush
<a id="push"></a>
UniPush是DCloud联合个推公司推出的集成型统一推送服务,使用了个推提供的SDK,因此需要在《隐私政策》中添加“个推消息推送SDK”相关说明。
建议《隐私政策》添加 “与授权合作伙伴共享”条款中,将 个推的用户隐私政策 加入其中,并向终端用户逐一明示您嵌入的SDK收集使用个人信息的目的、方式和范围。参考内容如下:
UniPush模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>个推·消息推送</td>
<td>com.igexin</td>
<td>消息推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.VIBRATE<br>
android.permission.GET_TASKS<br>
android.permission.QUERY_ALL_PACKAGES
</td>
<td>存储的个人文件、设备信息、网络信息(必选信息:设备平台、设备厂商、设备品牌、设备型号及系统版本、OAID、AndroidID、WIFI连接信息(SSID、BSSID)、运营商信息、DHCP;可选信息:IMEI、MAC、Google Advertising ID(GAID)、Serial Number、IMSI、ICCID、IP地址、基站信息)、位置相关信息、已安装应用列表</td>
<td><a href="http://docs.getui.com/privacy" target="_blank">http://docs.getui.com/privacy</a></td>
</tr>
</table>
注意:unipush 配置了华为厂商推送,需要添加HMS相关隐私协议 需要注意
HMS push
推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道。您通过集成推送服务,可以向客户端应用实时推送消息,因此需要在《隐私政策》中添加"HMS push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>华为 HMS push</td>
<td>com.huawei.hms</td>
<td>华为手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.REQUEST_INSTALL_PACKAGES<br>
android.permission.FOREGROUND_SERVICE<br>
android.permission.READ_PHONE_STATE
</td>
<td>设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI)、应用已安装列表、网络信息</td>
<td><a href="https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/sdk-data-security-0000001050042177" target="_blank">推送隐私声明</a></td>
</tr>
</table>
魅族 Flyme push
魅族推送服务是由魅族公司为开发者提供的消息推送服务,开发者可以向集成了魅族pushSDK的客户端实时地推送通知或者消息,与用户保持互动,提高活跃率,因此需要在《隐私政策》中添加"Flyme push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>魅族 Flyme push</td>
<td>com.meizu.cloud</td>
<td>魅族手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
android.permission.WRITE_EXTERNAL_STORAGE
</td>
<td>网络信息、存储的个人文件</td>
<td><a href="http://static.meizu.com/resources/term/privacy8.html" target="_blank">推送隐私声明</a></td>
</tr>
</table>
OPPO push
推送服务(OPPO PUSH)是OPPO公司向开发者提供的消息推送服务,通过服务端与OS端建立的一条稳定、可靠的长连接通道,向OPPO手机系统(ColorOS)上的APP应用客户端实时推送消息的服务。无论应用进程是否存在,均可正常收到消息。因此需要在《隐私政策》中添加"OPPO push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>OPPO push</td>
<td>com.heytap</td>
<td>OPPO手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>网络信息</td>
<td><a href="https://open.oppomobile.com/new/developmentDoc/info?id=10288" target="_blank">推送隐私声明</a></td>
</tr>
</table>
vivo push
vivo推送(即Vpush)是vivo公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定、可靠的长连接,为开发者提供向客户端应用实时推送消息的服务,支持百亿级的通知/消息推送,秒级触达移动用户,因此需要在《隐私政策》中添加"vivo push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>vivo push</td>
<td>com.vivo.push</td>
<td>vivo手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET
</td>
<td>网络信息</td>
<td><a href="https://dev.vivo.com.cn/documentCenter/doc/652#w1-12075822" target="_blank">推送隐私声明</a></td>
</tr>
</table>
小米 MiPush
小米推送(MiPush)是小米公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定、可靠的长连接,为开发者提供向客户端应用实时推送消息的服务,有效地帮助开发者触达用户,提升App活跃度,因此需要在《隐私政策》中添加"小米 push"相关说明。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>MiPush</td>
<td>com.xiaomi.push</td>
<td>小米手机厂商推送(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.VIBRATE
</td>
<td>网络信息</td>
<td><a href="https://dev.mi.com/distribute/doc/details?pId=1534" target="_blank">推送隐私声明</a></td>
</tr>
</table>
Statistic
<a id="statistic"></a>
HX3.1.14+ 友盟SDK已升级到9.3.8版本 适配合规问题
- 当你集成了统计模块。您需要确保App有《隐私政策》,并且在用户首次启动App时就弹出《隐私政策》取得用户同意!!!
- 您务必告知用户您选择友盟+SDK服务,请在《隐私政策》中增加如下参考条款:“我们的产品集成友盟+SDK,友盟+SDK需要收集您的设备Mac地址、唯一设备识别码(IMEI/android ID/IDFA/OPENUDID/GUID、SIM 卡 IMSI 信息)以提供统计分析服务,并通过地理位置校准报表数据准确性,提供基础反作弊能力。”
- 您务必确保用户同意《隐私政策》之后。再调用相关api!!!!
Statistic模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>友盟统计</td>
<td>com.uc.crashsdk、com.efs、com.umeng</td>
<td>统计(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE
</td>
<td>设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI)、应用已安装列表、网络信息</td>
<td><a href="https://www.umeng.com/page/policy" target="_blank">https://www.umeng.com/page/policy</a></td>
</tr>
</table>
OAuth、Share、Payment
<a id="oauth"/>
<a id="payment"/>
<a id="share"/>
登录、分享、支付存在引入相同SDK,这里统一进行说明:
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>微信开放平台</td>
<td>com.tencent.mm</td>
<td>登录、分享、支付(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>存储的个人文件、网络信息</td>
<td><a href="https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy" target="_blank">微信隐私协议</a></td>
</tr>
<tr>
<td>新浪开放平台</td>
<td>com.sina.weibo</td>
<td>登录、分享(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>存储的个人文件、网络信息</td>
<td><a href="https://weibo.com/signup/v5/privacy?spm=a1zaa.8161610.0.0.4f8776217Wu8R1" target="_blank">新浪隐私协议</a></td>
</tr>
<tr>
<td>QQ开放平台</td>
<td>com.tencent.open</td>
<td>登录、分享(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.MODIFY_AUDIO_SETTINGS<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>存储的个人文件、读取手机状态和身份、网络信息</td>
<td><a href="https://wiki.connect.qq.com/qq%e4%ba%92%e8%81%94sdk%e9%9a%90%e7%a7%81%e4%bf%9d%e6%8a%a4%e5%a3%b0%e6%98%8e" target="_blank">qq隐私协议</a></td>
</tr>
<tr>
<td>支付宝开放平台</td>
<td>com.alipay</td>
<td>支付(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE
</td>
<td>网络信息 设备id IP地址 OAID IMSI</td>
<td><a href="https://render.alipay.com/p/c/k2cx0tg8" target="_blank">支付宝隐私协议</a></td>
</tr>
</table>
一键登录
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>个验一键登录</td>
<td>com.g.elogin、com.g.gysdk、cn.com.chinatelecom</td>
<td>登录(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.READ_PHONE_STATE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_NETWORK_STATE
</td>
<td>设备信息、网络信息(必选信息:设备平台、设备厂商、设备品牌、设备型号及系统版本、OAID、AndroidID、WIFI连接信息(SSID、BSSID)、运营商信息、DHCP、IP地址、去标识化的手机号码;可选信息:IMEI、MAC、Google Advertising ID(GAID)、Serial Number、IMSI、ICCID、基站信息)、存储的个人文件、读取手机状态和身份、位置相关信息、已安装应用列表</td>
<td> <a href="https://docs.getui.com/privacy/" target="_blank">个验</a> <br><a href="https://wap.cmpassport.com/resources/html/contract.html" target="_blank">中国移动认证服务条款</a><br>
<a href="https://opencloud.wostore.cn/authz/resource/html/disclaimer.html?fromsdk=true" target="_blank">联通统一认证服务条款</a>
</td>
</tr>
</table>
一键登录包含以下登录认证需要在隐私协议中补充
- 天翼认证 隐私协议:天翼账号服务与隐私协议
- 中国移动认证 隐私协议:中国移动认证服务条款
- 联通统一认证 隐私协议:联通统一认证服务条款
Speech
<a id="speech"/>
Speech模块集成的三方SDK说明
百度语音
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>百度语音识别</td>
<td>com.baidu.speech</td>
<td>语音识别(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.RECORD_AUDIO<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_NETWORK_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE
</td>
<td>存储的个人文件、读取手机状态和身份、网络信息</td>
<td><a href="https://ai.baidu.com/ai-doc/REFERENCE/Qkdykq1r3" target="_blank">https://ai.baidu.com/ai-doc/REFERENCE/Qkdykq1r3</a></td>
</tr>
</table>
Map & Geolocation
<a id="map-amp-geolocation"/>
Map & Geolocation模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>高德开放平台</td>
<td>com.amap.api, com.loc, com.autonavi</td>
<td>实现定位/展现地图(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_COARSE_LOCATION<br>
android.permission.ACCESS_FINE_LOCATION<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
</td>
<td>存储的个人文件、位置信息、读取手机状态和身份、网络信息、传感器信息、Android ID</td>
<td><a href="https://lbs.amap.com/pages/privacy/" target="_blank">https://lbs.amap.com/pages/privacy/</a></td>
</tr>
<tr>
<td>百度开放平台</td>
<td>com.baidu</td>
<td>实现定位/展现地图(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_COARSE_LOCATION<br>
android.permission.ACCESS_FINE_LOCATION<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.CHANGE_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS<br>
android.permission.READ_LOGS<br>
android.permission.WRITE_SETTINGS<br>
android.permission.MOUNT_UNMOUNT_FILESYSTEM
</td>
<td>存储的个人文件、位置信息、读取手机状态和身份、网络信息</td>
<td><a href="https://map.baidu.com/zt/client/privacy/index.html" target="_blank">https://map.baidu.com/zt/client/privacy/index.html</a></td>
</tr>
</table>
注意
- 关于高德SDK在后台收集个人信息的问题,请在《隐私政策》中参考补充如下条款:我们的产品集成了高德SDK,应用在后台状态下高德SDK可能会收集设备标识信息(Android ID)以支持在后台继续提供相关服务。
uni-ad
<a id="uniAd"/>
uni-ad广告模块集成的三方SDK说明
<table style="word-break:break-all">
<tr>
<th style="width:8%">SDK名称</th>
<th style="width:10%">SDK包名/网址</th>
<th style="width:8%">SDK用途</th>
<th style="width:20%">可能获取的个人信息类型</th>
<th style="width:25%">调用的设备权限</th>
<th style="width:20%">信息用途</th>
<th style="width:10%">SDK隐私政策链接/目的</th>
</tr>
<tr>
<td>uni-ad</td>
<td></td>
<td>基础广告 </td>
<td style="font-size:12px">设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息 </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_COARSE_LOCATION
</td>
<td>广告投放合作,广告归因、反作弊、安全 </td>
<td><a href="https://doc.dcloud.net.cn/markdown-share-docs/1d821cdd3cdf2681045ec4be94bc8404/" target="_blank">隐私协议</a></td>
</tr>
<tr>
<td>推啊 </td>
<td> engine.tuifish.com </td>
<td>基础广告 </td>
<td style="font-size:12px">设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息 </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_COARSE_LOCATION
</td>
<td style="font-size:12px">识别广告、活动作弊行为;改善 SDK 崩溃率、推送个性化广告;广告投放。 </td>
<td><a href= "https://yun.tuia.cn/tuia/sdk/agreement/index.html" target="_blank">推啊隐私协议</a></td>
</tr>
<tr>
<td>快手 </td>
<td>com.kwad.sdk </td>
<td>增强广告 </td>
<td>基础信息:设备品牌、设备型号、软件系统版本、存储信息、运营商信息、设备时区、设备语言、网络信息等基础信息</br>
设备标识:IMEIs、MEID、OAID、AndroidID、IMSIs、ICCID</br>
位置信息:IP地址、MAC地址、GPS位置信息、基站信息、WIFI信息</br>
应用信息:应用安装列表</br>
其他信息:传感器信息、sim卡激活信息</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.INTERNET <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.VIBRATE
</td>
<td>广告投放、广告归因、反作弊、安全 </td>
<td><a href="https://www.kuaishou.com/about/policy" target="_blank">快手内容联盟隐私协议</a>和<a href="https://u.kuaishou.com/home/detail/1220" target="_blank">SDK使用规范</a></td>
</tr>
<tr>
<td>快手内容联盟 </td>
<td>com.kwad.sdk </td>
<td>增强广告 </td>
<td>基础信息:设备品牌、设备型号、软件系统版本、存储信息、运营商信息、设备时区、设备语言、网络信息等基础信息</br>
设备标识:IMEIs、MEID、OAID、AndroidID、IMSIs、ICCID</br>
位置信息:IP地址、MAC地址、GPS位置信息、基站信息、WIFI信息</br>
应用信息:应用安装列表</br>
其他信息:传感器信息、sim卡激活信息 </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.INTERNET <br>
android.permission.READ_PHONE_STATE <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.VIBRATE <br>
android.permission.SET_WALLPAPER<br>
android.permission.READ_EXTERNAL_STORAGE <br>
android.permission.WRITE_EXTERNAL_STORAGE <br>
android.permission.ACCESS_COARSE_LOCATION <br>
android.permission.BLUETOOTH
</td>
<td>广告投放、广告归因、反作弊、安全 </td>
<td><a href="https://www.kuaishou.com/about/policy" target="_blank">快手内容联盟隐私协议</a>和<a href="https://u.kuaishou.com/home/detail/1220" target="_blank">SDK使用规范</a></td>
</tr>
<tr>
<td>优量汇 </td>
<td>com.qq.e </td>
<td>增强广告 </td>
<td>基站、附近的WIFI、连接的WIFI、位置信息、设备制造商、设备型号、操作系统版本、屏幕分辨率、屏幕方向、屏幕DPI、IP地址、加速度传感器、磁场传感器、OAID、IMEI/MEID(Device ID)、Android_ID、包名、版本号、进程名称、运行状态、可疑行为、应用安装信息 </td>
<td style="font-size:12px">
android.permission.INTERNET <br>
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.CHANGE_NETWORK_STATE<br>
android.permission.QUERY_ALL_PACKAGES <br>
android.permission.REORDER_TASKS<br>
android.permission.VIBRATE <br>
android.permission.ACCESS_COARSE_LOCATION
</td>
<td style="font-size:12px">广告投放与监测归因、广告主统计投放结果、减少App崩溃、确保服务器正常运行、提升可扩展性和性能</td>
<td><a href="https://e.qq.com/dev/help_detail.html?cid=2005&pid=5983" target="_blank">优量汇隐私协议</a></td>
</tr>
<tr>
<td>穿山甲 </td>
<td>com.bytedance.sdk.openadsdk</td>
<td>增强广告 </td>
<td>设备品牌、型号、软件系统版本、屏幕密度、屏幕分辨率、设备语言、设备时区、sim卡信息(mcc&mnc)、CPU信息、可用存储空间大小、MAC地址、设备标识符(如IMEI、IMSI、ICCID、GAID(仅GMS服务)、MEID、硬件序列号build_serial、AndroidID、OAID、运营商信息、Wi-Fi状态、网络信号强度、IP地址、应用包名、运行中的进程信息、版本号、应用前后台状态、软件列表信息、线性加速度传感器、磁场传感器、旋转矢量传感器、精确位置信息、粗略位置信息(WiFi列表、WLAN接入点(如SSID,BSSID)、基站) </td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.WRITE_EXTERNAL_STORAGE
</td>
<td>广告投放合作、广告归因、反作弊 </td>
<td><a href="https://www.pangle.cn/privacy/partner" target="_blank">穿山甲隐私协议</a></td>
</tr>
<tr>
<td>Sigmob </td>
<td>com.sigmob.windad </td>
<td>增强广告 </td>
<td>设备信息:设备品牌、型号、操作系统版本、OAID、分辨率等基础设备信息
应用信息:应用名称、应用包名、应用版本号等
其他:运营商信息、时区</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.INTERNET <br>
android.permission.ACCESS_WIFI_STATE <br>
android.permission.CHANGE_WIFI_STATE <br>
android.permission.READ_PHONE_STATE <br>
android.permission.REQUEST_INSTALL_PACKAGES <br>
android.permission.QUERY_ALL_PACKAGES
</td>
<td>广告投放、广告主归因、反作弊 </td>
<td><a href="https://doc.sigmob.com/Sigmob%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E5%90%88%E8%A7%84%E6%9D%A1%E6%AC%BE/%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96/">Sigmob隐私协议</a></td>
</tr>
<tr>
<td>百度百青藤</td>
<td>com.baidu.mobads.proxy </td>
<td>增强广告 </td>
<td>设备信息:设备品牌、型号、软件系统版本、分辨率、网络信号强度、传感器信息,磁盘总空间、系统总内存空间、手机重启信息、手机系统更新时间等基础信息、OAID、AndroidID、屏幕宽高,屏幕像素密度,系统版本号,设备厂商,设备型号,手机运营商,手机网络状态,设备剩余存储空间,手机重启时间和更新时间
开发者应用信息:应用包名、应用前后台状态
设备信息:IMEI、IMSI、MEID
位置信息</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE<br>
android.permission.ACCESS_COARSE_LOCATION<br>
android.permissio.WRITE_EXTERNAL_STORAGE<br>
</td>
<td>为最终用户提供安全保障、改善我们的产品和服务,开展内部审计、数据分析和研究 </td>
<td><a href="https://union.baidu.com/bqt/#/legal/policies">百度百青藤隐私协议</a></td>
</tr>
<tr>
<td>HUAWEI Ads</td>
<td>com.huawei.hms.ads.lite</td>
<td>增强广告 </td>
<td>设备信息、网络信息、位置信息、应用信息、应用使用信息、上下文信息</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
</td>
<td>单次请求的广告定向投放、程序化广告投放、广告监测归因与反作弊。</td>
<td><a href="https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/whale-hong-kinetic-energy-sdk-privacy-statement-0000001658283582">HUAWEI Ads 隐私声明</a><br><br>和<br><br><a href="https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/whale-hong-kinetic-sdk-compliance-user-guide-0000001658442922">HUAWEI Ads SDK隐私安全说明</a></td>
</tr>
<tr>
<td>章鱼广告</td>
<td>com.octopus.ad</td>
<td>增强广告 </td>
<td>设备品牌、设备型号、设备时区、设备语言、系统版本、开发者应用名、应用版本号、应用包名、网络类型、UserAgent信息、网络状态、崩溃信息、性能数据、屏幕高宽、屏幕方向、屏幕DPI信息、系统更新时间、开机时间、磁盘空间、物理内存、设备ID(OAID、GAID)、IMEI 用户授权才收集、USB调试模式、cpu、运行状态、运营商、传感器信息、掠过手势内容</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
</td>
<td>基于用户设备信息调整广告投放、统计分析、反作弊、实现广告正常显示与交互功能,通过崩溃信息,以此来优化代码缺陷,最大程度减少App崩溃。通过收集SDK运行过程中性能数据,以优化SDK的性能。统计广告数据,以用于广告主统计投放结果。</td>
<td><a href="https://doc.adintl.cn/#/zh-cn/guide/UsePrivacy">章鱼广告SDK隐私政策</a></td>
</tr>
<tr>
<td>倍孜广告</td>
<td>com.beizi.ad</td>
<td>增强广告 </td>
<td>设备品牌、设备型号、设备时区、设备语言、系统版本、网络类型、UserAgent信息、屏幕高宽、屏幕方向、屏幕DPI信息、系统更新时间、开机时间、磁盘空间、物理内存、运营商、sim卡状态、传感器信息、掠过手势内容、cpu、设备ID(国内用户OAID、海外用户GAID)、开发者应用名、应用版本号、应用包名、运行状态、使用数据、诊断数据</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.READ_EXTERNAL_STORAGE<br>
</td>
<td>广告投放策略、统计分析服务、反作弊分析、广告正常显示与交互功能的实现、广告归因、最大程度减少App崩溃、确保服务器正常运行、提升可扩展性和性能</td>
<td><a href="https://sdkdoc.beizi.biz/#/zh-cn/guide/UsePrivacy">BeiZi SDK隐私保护声明</a></td>
</tr>
<tr>
<td>泛连</td>
<td>com.fl.saas.s2s</td>
<td>增强广告 </td>
<td>设备品牌、型号、软件系统版本、屏幕密度、屏幕分辨率、设备语言、设备时区、IMEI、IMSI、ICCID、GAID、MEID、IDFA、IDFV、AndroidID、OAID、手机系统重启时间、设备的MAC地址、User Agent、IP地址、运营商信息、Wi-Fi状态、网络信号强度、应用版本、应用包名、应用名称、应用前后台状态、应用列表信息、加速度传感器、陀螺仪传感器、广告的展示、点击及转化等交互数据、系统崩溃数据、性能数据</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.VIBRATE<br>
android.permission.REQUEST_INSTALL_PACKAGES<br>
android.permission.READ_PHONE_STATE<br/>
</td>
<td>广告投放及广告监测归因、反作弊、摇一摇广告投放、广告投放统计分析、提升SDK的稳定性,减少APP的崩溃</td>
<td><a href="https://www.adfunlink.com/doc/privacy.html">Funlink隐私保护声明</a></td>
</tr>
<tr>
<td>聚力阅盟</td>
<td>com.dcloudym</td>
<td>增强广告 </td>
<td>设备型号、操作系统版本、唯一设备标识符、设备环境等软硬件特征信息;GPS位置以及WLAN接入点、蓝牙和基站等传感器信息</td>
<td style="font-size:12px">
android.permission.INTERNET<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.VIBRATE<br>
android.permission.REQUEST_INSTALL_PACKAGES<br>
android.permission.READ_PHONE_STATE<br/>
android.permission.WRITE_EXTERNAL_STORAGE<br/>
android.permission.ACCESS_COARSE_LOCATION<br/>
android.permission.ACCESS_FINE_LOCATION<br/>
</td>
<td>广告投放及广告监测归因、反作弊、摇一摇广告投放</td>
<td><a href="https://idbj.juliyuemeng.com/privacy">聚力阅盟隐私保护声明</a></td>
</tr>
<tr>
<td>华夏乐游(优推广告)</td>
<td>com.alliance.ssp.ad</td>
<td>增强广告 </td>
<td>设备信息: 必选信息:设备品牌、型号、软件系统版本、屏幕密度、屏幕分辨率、设备语言、设备时区等基础信息 【仅iOS】磁盘总空间、系统总内存空间; 可选信息:设备MAC地址、设备标识符(如IMEI、MEID,具体字段因软硬件版本不同而存在差异)如AndroidID、OAID、IMSI、IMEI、MEID 等。网络信息: 必选信息:运营商信息、网络状态(包括BSSID、SSID 等)、IP地址。应用信息 :必选信息:应用包名、版本号;可选信息:应用安装列表信息。传感器信息:必选信息:加速度传感器。广告信息: 必选信息:对广告的填充、展示、点击及转化等交互数据。位置信息: 可选信息:精确位置信息。性能数据: 必选信息:如崩溃数据、性能数据</td>
<td style="font-size:12px">
android.permission.ACCESS_NETWORK_STATE<br/>
android.permission.INTERNET<br/>
android.permission.READ_PHONE_STATE<br/>
android.permission.ACCESS_WIFI_STATE<br/>
android.permission.REQUEST_INSTALL_PACKAGES<br/>
android.permission.ACCESS_FINE_LOCATION<br/>
android.permission.ACCESS_COARSE_LOCATION<br/>
android.permission.READ_EXTERNAL_STORAGE<br/>
android.permission.WRITE_EXTERNAL_STORAGE<br/>
android.permission.QUERY_ALL_PACKAGES<br/>
</td>
<td>广告投放及广告反作弊。广告监测归因。保证网络服务有效性及稳定性。摇一摇、扭一扭功能。减少App崩溃、提供稳定可靠的服务</td>
<td><a href="https://lemon.gameley.com/flowdocs/%E4%BC%98%E6%8E%A8%E5%B9%BF%E5%91%8A%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/%E9%9A%90%E7%A7%81%E5%8D%8F%E8%AE%AE/%E4%BC%98%E6%8E%A8%E5%B9%BF%E5%91%8A%E5%B9%B3%E5%8F%B0SDK%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96.html">优推广告平台 SDK 隐私政策</a></td>
</tr>
</table>
腾讯x5内核
<a id="e885bee8aeafx5e58685e6a0b8"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:15%">使用目的</th>
<th style="width:30%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>腾讯浏览服务SDK</td>
<td>com.tencent.tbs、com.tencent.smtt</td>
<td>x5内核渲染webview(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.ACCESS_NETWORK_STATE<br>
android.permission.ACCESS_WIFI_STATE<br>
android.permission.READ_PHONE_STATE
</td>
<td>存储的个人文件、读取手机状态和身份、网络信息</td>
<td><a href="https://x5.tencent.com/docs/privacy.html" target="_blank">https://x5.tencent.com/docs/privacy.html</a></td>
</tr>
</table>
Contacts
<a id="Contacts"/>
管理系统通讯录,用于可对系统通讯录进行增、删、改、查等操作。通过plus.contacts获取系统通讯录管理对象。
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>Contacts</td>
<td>io.dcloud.feature.contacts</td>
<td>管理系统通讯录,用于可对系统通讯录进行增、删、改、查等操作(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.GET_ACCOUNTS<br>
android.permission.WRITE_CONTACTS<br>
android.permission.READ_CONTACTS
</td>
<td>获取联系人信息</td>
<td style="font-size:12px">(宿主根据APP自身逻辑 自行填写相关隐私政策信息)</td>
</tr>
</table>
Messaging
<a id="Messaging"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>Messaging</td>
<td>io.dcloud.feature.messagings</td>
<td>管理设备通讯功能,可用于短信、彩信、邮件发送等(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.RECEIVE_SMS<br>
android.permission.SEND_SMS<br>
android.permission.WRITE_SMS<br>
android.permission.READ_SMS
</td>
<td>读写短信、彩信、邮件</td>
<td style="font-size:12px">(宿主根据APP自身逻辑 自行填写相关隐私政策信息)</td>
</tr>
</table>
Bluetooth(低功耗蓝牙)
<a id="Bluetooth"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>Bluetooth</td>
<td>io.dcloud.feature.bluetooth</td>
<td>访问蓝牙设备,包括搜索、连接。(请根据具体使用目的填写)</td>
<td style="font-size:12px">
android.permission.ACCESS_FINE_LOCATION<br>
android.permission.ACCESS_COARSE_LOCATION<br>
android.permission.BLUETOOTH<br>
android.permission.BLUETOOTH_ADMIN<br><br>
以下两种权限在targetSdkVersion31及以上才需要!<br>
android.permission.BLUETOOTH_SCAN<br>
android.permission.BLUETOOTH_CONNECT
</td>
<td>访问蓝牙设备、位置信息。</td>
<td style="font-size:12px">(宿主根据APP自身逻辑 自行填写相关隐私政策信息)</td>
</tr>
</table>
FacialRecognitionVerify(实人认证)
<a id="FacialRecognitionVerify"/>
<table style="word-break:break-all">
<tr>
<th style="width:10%">SDK名称</th>
<th style="width:10%">包名信息</th>
<th style="width:25%">使用目的</th>
<th style="width:20%">使用的权限</th>
<th style="width:20%">涉及个人信息</th>
<th style="width:10%">隐私权政策链接</th>
</tr>
<tr>
<td>实人认证</td>
<td>com.dtf.face.verify</td>
<td>实人认证服务搭载真人检测和人脸比对等生物识别技术,配合权威数据源验证,可快速校验自然人的真实身份。</td>
<td style="font-size:12px">
android.permission.READ_PHONE_STATE<br>
android.permission.INTERNET<br>
android.permission.WRITE_EXTERNAL_STORAGE<br>
android.permission.CAMERA<br>
</td>
<td>设备信息、最终用户上传的语音、图片信息、终端权限信息、日志信息</td>
<td style="font-size:12px"><a href="https://terms.aliyun.com/legal-agreement/terms/suit_bu1_ali_cloud/suit_bu1_ali_cloud202107281509_18386.html" target="_blank">https://terms.aliyun.com/legal-agreement/terms/suit_bu1_ali_cloud/suit_bu1_ali_cloud202107281509_18386.html</a></td>
</tr>
</table>
如果您的应用使用了依赖三方SDK的模块也需要将其合规条款添加到《隐私政策》中
uni原生插件
如果应用使用了uni原生插件,需要注意一下几点:
- 使用插件时请查看插件详情页面中的
隐私、权限声明
。(插件使用什么sdk?获取了什么用户信息?都应由插件作者提供并填写在隐私、权限声明
中) - 将插件中用到的三方SDK信息添加到用户隐私协议中。例如集成了
百度定位
。就需要在隐私协议中说明集成了百度定位SDK。获取了xxx用户信息!用于xxx. - 如果发现插件有获取用户信息而插件详情页并没有提供
隐私、权限声明
,请与插件开发者或与我们反馈共同督促进行补充。
其它
《隐私政策》必须非常清楚、全面地说明(不要用可能收集、了解用户信息这种模糊不清晰的词语)收集用户个人信息的目的、方式和范围。
如果应用使用“通讯录”、“短信”等相关功能,请根据应用业务场景进行描述。