uniapp:打包ios配置隐私协议框

使用uniapp打包ios 上架商店需要配置隐私协议政策弹窗。当用户点击确定后才能继续操作。

首先manifest.json中配置使用原生隐私政策提示框是不支持ios的。不用勾选

解决思路:

1、新建页面:iosLogin.vue,pages.json中 这个页面需要放在第一位

html 复制代码
<template>
	<view class="dialog">
		<view class="bg"></view>
		<view class="title">服务协议和隐私政策</view>
		<view class="content">
			请你务必审慎阅读、充分理解"服务协议"和"隐私政策"各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。你可阅读
			<text class="link" @click="linkClick(1)">《服务协议》</text>和
			<text class="link" @click="linkClick(2)">《隐私政策》</text>
			了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。
		</view>
		<view class="btn">
			<button @click="disagree">不同意并退出</button>
			<button @click="agree">同意</button>
		</view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				refCode:''
			}
		},
		onLoad(option) {
			if (option.refCode) {
				this.refCode = option.refCode;
				uni.setStorageSync('refCode', option.refCode);
			}
		},
		methods:{
			linkClick(num) {
				if(num == 1){
					let name1 = encodeURIComponent('用户协议')
					plus.runtime.openURL(`https://h5.******.com.cn/pages/login/xieyi?title=${name1}&type=user_agreement`)
				}else{
					let name2 = encodeURIComponent('隐私政策')
					plus.runtime.openURL(`https://h5.******.com.cn/pages/login/xieyi?title=${name2}&type=privacy_agreement`)
				}
			},
			agree() {
				uni.setStorageSync('agree', 1) // 设置缓存,下次进入应用不再弹出
				this.$go(4,'/pages/index/index?refCode='+this.refCode); // 跳转首页
			},
			disagree(){
				// #ifdef APP-PLUS
				plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
				// #endif
			}
		}
	}
</script>

<style lang="scss">
	page {
		background: url('../../static/1.png')no-repeat left top #fff;
		background-size: 750rpx 1334rpx;
		position: relative;
		z-index: 2;
		.bg{
			position: fixed;
			left: 0;
			top: 0;
			z-index: -1;
			background: rgba(0, 0, 0, .5);
			width: 750rpx;
			height: 100vh;
		}
	}

	// 弹窗样式
	.dialog {
		margin: 0 auto;
		margin-top: calc(30vh);
		width: 600rpx;
		border-radius: 16rpx;
		background-color: #fff;
		
		.title {
			text-align: center;
			line-height: 80rpx;
			font-size: 32rpx;
			font-weight: 600;
		}

		.content {
			padding: 0 32rpx;
			text-indent: 1em;

			.link {
				color: #FF6840;
			}
		}

		.btn {
			display: flex;
			flex: 1;

			uni-button {
				margin: 0;
				flex: 1;
				background-color: #fff;
			}

			uni-button::after {
				border: none;
			}
		}
	}
</style>

app.vue

js 复制代码
onLaunch: async function() {
	// #ifdef APP-PLUS
	const platform = uni.getSystemInfoSync().osName
	// 判断是不是ios,并且是否同意了隐私政策
	let agree = uni.getStorageSync('agree')
	if (platform === 'android') {
		plus.navigator.closeSplashscreen() // 关闭启动页
	} else {
		if(agree){
			uni.reLaunch({
				url: "/pages/index/index",
				success() {
					plus.navigator.closeSplashscreen()
				}
			})
		}else{
			console.log('ios第一次启动需要同意隐私政策');
			// ios单独进行隐私政策验证
			uni.navigateTo({
				url: "/pages/login/iosLogin",
				success() {
					plus.navigator.closeSplashscreen()
				}
			})
		}
	}
	// #endif
},

提示:如果项目有用到消息提示类的功能,在确认隐私政策前可能会有弹窗提示 是否接收APP消息,这个不影响上架。

相关推荐
开心就好20254 小时前
不同阶段的 iOS 应用混淆工具怎么组合使用,源码混淆、IPA混淆
后端·ios
世界不及妳微笑4 小时前
关于Xcode26.4 踩坑适配
ios·xcode
iceiceiceice4 小时前
iOS 26 适配 | 使用 `hidesSharedBackground` 保持导航栏按钮原有样式
ios·objective-c·编程语言
RuoyiOffice6 小时前
企业请假销假系统设计实战:一张表、一套流程、两段生命周期——BPM节点驱动的表单变形术
java·spring·uni-app·vue·产品运营·ruoyi·anti-design-vue
KongHen026 小时前
uniapp-x实现自定义tabbar
前端·javascript·uni-app·unix
SY.ZHOU7 小时前
移动端架构体系(一):组件化
android·ios·架构·系统架构
RuoyiOffice10 小时前
SpringBoot+Vue3+Uniapp实现PC+APP双端考勤打卡设计:GPS围栏/内网双模打卡、节假日方案、定时预生成——附数据结构和核心源码讲解
java·spring·小程序·uni-app·vue·产品运营·ruoyi
人月神话Lee12 小时前
一个iOS开发者对Flutter中Widget、Element和RenderObject的理解
前端·flutter·ios
2501_9160074713 小时前
iOS 开发工具有哪些 按开发流程整理的工具清单
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程