• 作者:老汪软件技巧
  • 发表时间:2024-09-28 07:01
  • 浏览量:

2、详情页

3、生成结果页

4、生成海报

引导弹框

上新角色时如何让用户快速的看到角色,或者上新功能时如何让用户快速的体验新功能,这块做了一个引导弹框管理类,用来管理弹框。

1、引导弹框

2、引导弹框管理设计

当有新功能/新角色上线时 引导用户去体验,如果要做成可配置化,就需要解藕,当不同活动上线的时候也可以使用。

活动弹框包含两个部分,第一个是活动图片,第二个是关闭按钮,图片可以通过下发来配置,但是图片的点击跳转,最好也能够通过配置下发,关闭按钮的逻辑是统一的,点击之后就关闭当前弹框。

弹框数据结构

弹框列表

dialog1dialog2dialog3...dialogn

3、实现弹框管理器

//用于弹框的频控管理类
export function canShowDialogById(id) {
        //判断弹框是否可以展示
        const list = uni.getStorageSync('dialog_id_list') || [];
        // 判断 list 中是否包含 id
        const isIdInList = list.includes(id);
        // 如果 id 存在于 list 中,则返回 false;否则返回 true
        return !isIdInList;
}
//保存弹框展示
export function saveDialogTimeById(id) {
        uni.setStorageSync('dialog_id_list', id);
}
export function getDialogItem(list) {
        if (!list) {
                return null;
        }
        // 使用 find 方法查找符合条件的 item
        const foundItem = list.find(item => {
                return item && item._id && canShowDialogById(item._id);
        });
        console.log("get dialog item", foundItem);
        return foundItem || null;
}

2. 弹框类

<template>
        <view class="mask">view>
        <view class="modal">
                <image class="modal-image" :src="dialogItem.image" mode="widthFix" @click="gotoDetail">image>
                <image class="close-button" src="/static/images/icon_close.png" @click="closeModal">image>
        view>
template>
<script>
        export default {
                name: "custom-dialog",
                props: {
                        dialogItem: {
                                type: Object,
                                required: true
                        }
                },
                data() {
                        return {
                        };
                },
                methods: {
                        closeModal() {
                                console.log("close modal");
                                this.$emit('closeModal');
                        },
                        gotoDetail() {
                                this.$emit('gotoDetail');
                        },
                }
        }
script>
<style>
        .mask {
                position: fixed;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background-color: rgba(0, 0, 0, 0.5);
                z-index: 9999;
        }
        .modal {
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);
                width: 80vw;
                /* 宽度为屏幕宽度的80% */
                text-align: center;
                z-index: 19999;
        }
        .modal-image {
                width: 100%;
                height: auto;
                /* 图片高度自适应 */
                z-index: 19999;
        }
        .close-button {
                margin-top: 20px;
                /* 调整关闭按钮与图片间距 */
                width: 40px;
                /* 调整关闭按钮的大小 */
                height: 40px;
                /* 调整关闭按钮的大小 */
                display: block;
                margin: 0 auto;
                z-index: 19999;
                /* 将关闭按钮水平居中 */
        }
style>

推荐角色

当用户生成当前角色后,给用户推荐其他角色,让整个流程更加完善,提高用户体验,不然用户生成一个角色之后又要返回去选其他角色

1、通过算法推荐,可以动态调整。

2、直接指定,方便配置下发。

1、推荐算法

1、活动角色

如果是活动角色,从活动列表中获取同性别角色。如果没有同性别角色,获取其他性别角色。

2、其他角色

优先找同朝代,同身份、同性别的角色,如果没有同身份的角色、找同性别不同身份的角色,如果没有同性别、不同身份的角色 查找其他朝代同性别、同身份的角色。

暂时无法在飞书文档外展示此内容

3、朝代关联关系

朝代关联

清朝

民国

明朝

宋朝

...

...

4、推荐角色剔除

对用户已经生成过的角色不再推荐,从推荐列表中进行剔除,不然达不到让用户体验多个角色的目标。

2、手动配置推荐角色

直接在数据库中关联下发推荐的角色,下发的推荐角色不可以更改,但是可以定制化推荐。

{
    "dynasty": "商周",
    "dynasty_label": "商周",
    "gender": "male",
    "image_list": [
        "https://env-00jxh1m2drwc.normal.cloudstatic.cn/hot-style/%E5%95%86/%E5%95%86%E5%91%A8-%E5%A7%AC%E5%8F%9101.png",
        "https://env-00jxh1m2drwc.normal.cloudstatic.cn/hot-style/%E5%95%86/%E5%95%86%E5%91%A8-%E5%A7%AC%E5%8F%9102.png"
    ],
     "recommend_list": [
        "1",
        "2"
    ],
    "intro": "姬发",
    "name": "姬发",
    "role": "武将"
    "count":0
}

3、新增角色生成次数数据

每个角色生成时,上报一条生成数据,用于推荐算法的使用,推荐时可以从其他用户使用最多的角色里面进行选择。新增count字段。用于统计角色生成次数

{
    "dynasty": "商周",
    "dynasty_label": "商周",
    "gender": "male",
    "image_list": [
        "https://env-00jxh1m2drwc.normal.cloudstatic.cn/hot-style/%E5%95%86/%E5%95%86%E5%91%A8-%E5%A7%AC%E5%8F%9101.png",
        "https://env-00jxh1m2drwc.normal.cloudstatic.cn/hot-style/%E5%95%86/%E5%95%86%E5%91%A8-%E5%A7%AC%E5%8F%9102.png"
    ],
    "intro": "姬发",
    "name": "姬发",
    "role": "武将"
    "count":0
}

4、随机推荐算法

用户已经使用过,如何推荐,用户未使用过,如何推荐。

根据选择偏好比例推荐:

根据用户选择历史人物的性别和朝代比例,结合用户的选择偏好,给出推荐列表。

避免重复推荐:

确保推荐的历史人物不与用户已选择过的历史人物角色重复。广告接入

广告接入采用尽量少打扰用户的方式,用户进入时不会看到广告,只有其他操作时才让用户看广告。

场景场景截图广告类型广告样式时机频控对应代码

列表页

原生广告-横幅

用户下滑获取更多时,插入广告,首页默认展示3个底图,上滑时 是否可以在第5个位置放广告?其他页面类似。

合成中

原生广告-格子

合成时放在合成文案的下面

每次合成时都展示

// wxml文件

开始合成

激励广告

用户点击开始穿越的时候展示只有看完广告之后才可以开始穿越,不然不可以穿越

看一次广告可以穿越几次?

小程序上线碰到的问题1、小程序备案

由于没有公司,也不想做个人小程序,所以弄了个人工商的小程序,按照微信的收费工商的一年300元。万能淘宝可以解决,懂的都懂。

2、算法备案

由于小程序涉及到换脸功能,需要AI算法备案,这个当时愁死了,但是最后还是解决了,也没花啥钱,在淘宝上问了一家开口5888元,最后不到100元搞定。

最后

喜欢的同学可以扫码体验一下,有想交流的也可以留言。