收藏 分销(赏)

基于IOS平台的文化交流平台系统的设计与实现已改样本.doc

上传人:精**** 文档编号:4661614 上传时间:2024-10-08 格式:DOC 页数:48 大小:1.04MB
下载 相关 举报
基于IOS平台的文化交流平台系统的设计与实现已改样本.doc_第1页
第1页 / 共48页
基于IOS平台的文化交流平台系统的设计与实现已改样本.doc_第2页
第2页 / 共48页
点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 目 录 ABSTRACT ii 第1章 绪论 1 1.1 开发背景及意义 1 1.1.1 开发背景 1 1.1.2 开发意义 1 1.2 开发工具及运行环境 2 1.2.1 开发工具 2 1.2.2 运行环境 2 第2章 项目所用技术介绍 3 2.1 IOS简介 3 2.2 IOS系统架构 3 2.3 IOS系统优势 5 2.3.1 IOS模块性 5 2.3.2 灵活性 5 2.3.3 可伸缩性 5 2.3.4 可操作性 5 第3章 系统分析 6 3.1 功能需求 6 3.2系统使用例图 7 第4章 系统设计细节 8 4.1 程序总体架构 8 4.2 模块功能设计 9 第5章 详细设计与编码 10 5.1 登陆注册模块 10 5.2 首页模块 14 5.3 发布动态模块 17 5.3.1 基本功能 17 5.3.2 选择图片上传 22 5.3.3 聊天功能 24 第6章 系统测试 27 6.1 登陆模块测试用例 28 6.2 发表动态测试用例 28 6.3 浏览动态测试用例 28 6.4 系统评价 29 第7章 总结 30 谢 辞 31 参考文献 32 基于IOS平台的文化交流平台系统的设计与实现 [摘要] 文化交流平台, 是一种非正式的迷你型社交软件, 是一个基于用户关系的信息分享、 传播及获取平台。用户能够经过WEB(WORLD WIDE WEB)、 WAP( Wireless Application Protoco) 以及各种客户端组件个人社区, 以150字左右的文字更新信息, 并实现即时分享。它是一种互动及传播性极快的工具, 具有实时性, 传播速度甚至比大众媒体还快。 本文阐述了文化交流平台的各种相关知识, 特别对iPhone客户端的开发和应用作了详细的介绍, 同时将设计过程中所用到的主要方法及控件进行了详细说明。此次毕业设计以IOS操作系统作为开发平台, Xcode作为开发环境, 参照社交软件的基本功能, 进行文化交流平台客户端软件的设计与实现。本软件实现了首页获取数据、 我的资料、 我的关注、 我的粉丝、 收藏动态、 评论动态、 添加照片、 发表动态、 在线聊天等功能, 具备了一般社交软件所具有的功能, 具有较强的实用性。 [关键词] IOS平台 iPhone社交 文化交流 ABSTRACT [Abstract] Cultural exchange platform, is an informal Mini social software, is a user based on the relationship between the information sharing, dissemination and access platform. Users can WEB (WIDE WEB WORLD), WAP (Application Protoco Wireless) as well as a variety of client components of the community, to 150 words or so of text updates, and to achieve instant sharing. It is a kind of interactive and fast communication tools, with real-time, and even faster than the mass media. In this paper, the cultural exchange platform for the related knowledge, especially the development and application of iPhone client made a detailed introduction, at the same time, the design of the main methods used in the process and control are described in detail. The graduation project to IOS operating system as a development platform, Xcode as the development environment, with reference to the basic functions of social software, the design and implementation of the cultural exchange platform client software. The software achieve the home page access to the data, I and friends, my concern, my fans, used to comment on, comment, forward comments, add photos, comment, online chat, etc. function, with the general social software with the function, has a strong practicality. [Keywords] IOS platform, iPhone social, cultural exchanges 第1章 绪论 1.1 开发背景及意义 1.1.1 开发背景 3月, 社交平台先驱blogger创始人埃文·威廉姆斯(Evan Williams)创立的新兴公司Twitter推出了社交服务。在最初阶段, 这项服务只是用于向好友的手机发送文本信息。Twitter英文原意为小鸟的叽叽喳喳声, 用户能用如发手机短信的数百种工具更新信息。Twitter的出现把世人的眼光引入了社交的小小世界里。Twitter是一个社交网络及微客户端服务。现在, 用户能够经由SMS、 即时通信、 电邮、 Twitter网站或Twitter客户端软件(如Twitterrific)输入最多140字的文字更新, Twitter被Alexa网页流量统计评定为最受欢迎的50个网络应用之一。 Twitter在国外的”大红大紫”, 令国内有些人终于坐不住了。 从校内网起家的王兴, 在 把企业卖给千橡互动后, 于第二年建立了饭否网。同样擅长技术活的SwiSen也瞄准了这个行业, 很快清新、 简约的随心微博也开始正式上线。而腾讯作为一个拥有4.1亿QQ用户的企业, 看着用户对随时随地发布自己状态的强烈需求后, 也忍不住尝试了一把, 8月13日腾讯滔滔上线。 7月中旬开始, 国内大批老牌社交产品(饭否、 腾讯滔滔等)停止运营, 一些新产品开始进入人们的视野, 像1月份开放的大围脖, 6月份开放的Follow5, 7月份开放的贫嘴, 8月份开放的新浪微博。其中Follow5在 7月19日孙楠大连演唱会上的亮相, 是国内第一次将社交平台引入大型演艺活动, 与twitter当年的发展颇有几分神似。 1.1.2 开发意义 在智能手机飞速发展的今天, 手机成为人们快速获取、 发布和传递信息的重要渠道, 它在人们政治、 经济、 生活等各个方面发挥着重要的作用.因此应用建设在智能手机应用上的地位显而易见, 它已成为人文信息交流, 政府、 企事业单位信息化建设中的重要组成部分, 从而倍受人们的重视。 社交平台, 有点像聊天室或者说是像茶楼酒肆。是沟通人与人之间思想, 交流知识, 讨论问题和交换观点的网络交际平台。在这个平台上首先是虚拟的人( 性别, 年龄, 职业, 喜好, 职务等) 共同谈论你所感兴趣的任何话题, 经过你们之间交流争辩让你对它有更进一步的了解和认知。 社交平台的传播速度更快, 关注的人更多, 时效性更强。社交平台上有许多信息是在传统媒体上看不到的, 而公众对公共话题天生有一种关注心态, 在社交平台上企业和客户之间不再是单纯的买卖关系, 社交平台用好了, 就能够在企业用户中培养出超越买卖的情感关系, 在市场竞争中游刃有余。 传统的企业口碑营销, 偏重在认识的人之间的口碑, 但现在, 越来越多的年轻人相信网络社群上不认识的”亲朋好友”的评价。因此, 赢得网友的口碑, 对企业而言, 几乎跟花钱做广告一样重要。微社交平台的出现丰富了企业网络营销的手段, 帮助企业”赢得”陌生人的口碑。 微社交平台作为一个新的交流互动平台, 正在受到越来越多人的青睐。相比博客而言, 微社交平台使用更加简单, 用户所付出的单位成本、 精力投入都更少, 写作门槛更低, 用户扩展更为迅速, 为可能实现的媒体信息传播积累了庞大的通讯员队伍。同时, 整合各类工具特别是手机短信的优势, 微社交平台具备了实时传播的特性, 在面对突发新闻事件时, 微社交平台的报道速度往往能领先于传统媒体。 随着社交平台的”客”流量不但呈爆炸式增长, 而且其影响力也与日俱增。微社交平台迅速成为中国企业及时传播信息, 增加用户与企业粘性的营销利器。众多中小企业纷纷设立官方微博客、 官方公众号等等, 安排专人在新浪、 微信、 QQ等开博, 与粉丝紧密互动, 积极推广企业品牌。社交平台预示着个体的力量不再孱弱, 它在影响和改变这个世界上正发挥越来越大的作用。 1.2 开发工具及运行环境 1.2.1 开发工具 (1) 开发该软件使用的开发工具为Xcode7.1版本[1]。 (2) 开发该软件使用的开发语言为Objective-C等开发语言[2-3]。 1.2.2 运行环境 (1) 该软件运行手机的版本为iPhone4及其以上版本。 (2) 开发该软件运行的苹果系统为IOS4.3.5及其以上版本。 (3) 软件运行手机硬件参数 ① CPU: 苹果A4处理器 集成PowerVR SGX535图形核心, 800MHz; ② Ram: 512MB; ③ 屏幕: 3.5英寸, 960×640像素; ④ 支持频段: WCDMA 2100MHz 、 CDMA EV-DO( 电信3G专用) 。 第2章 项目所用技术介绍 2.1 IOS简介 IOS是由苹果公司开发的手持设备操作系统。苹果公司最早于 1月9日的Macworld大会上公布这个系统, 最初是设计给iPhone使用的, 后来陆续套用到iPod touch、 iPad以及Apple TV等苹果产品上。IOS与苹果的Mac OS X操作系统一样, 它也是以Darwin为基础的, 因此同样属于类Unix的商业操作系统。原本这个系统名为iPhone OS, 直到 6月7日WWDC大会上宣布改名为IOS。截止至 11月, 根据Canalys的数据显示, IOS已经占据了全球智能手机系统市场份额的30%, 在美国的市场占有率为43%, 据市场研究公司ABI Research最新发表的市场预测报告称, 苹果的全球智能手机市场份额在 将达到最高点的22%。 2.2 IOS系统架构 Objective-C作为开发语言, 是c语言的升级版[4]。 iOS的系统结构分为以下四个层次: 核心操作系统( the Core OS layer) , 核心服务层( the Core Services layer) , 媒体层( the Media layer) , Cocoa 触摸框架层( the Cocoa Touch layer) 。如图1所示。 图1 IOS系统结构层次 对初学者来说, Objective-C存在了很多令人费解的写法, 实际上她们是非常优雅的。有C语言基础的程序员在专业老师的指导下, 用1个月的时间就能够完全掌握Objective-C这门编程语言了。 程序员写的最多的就是函数以及调用自己写的或者别人写的函数。本文就从函数的角度来看下Objective-C的优雅之处。 C#和Objective-C同属于C语言系列[5]。让我们先看下C#的函数定义和调用, 做个对比。 C#函数的定义: public void doIt(string actorName,  string movieName,  int timesSeen) { Console.Write("{0} is my favorite actor in the movie {1},  I saw it {2} times.",  actorName,  movieName,  timesSeen); } 函数的调用: Class1 objMovie = new Class1(); objMovie.doIt("莱昂纳多·迪卡普里奥",  "盗梦空间",  120); 再让.NET程序员看下Objective-C的定义: - (void) doIt:(NSString *) actorName movieName: (NSString*) value timesSeen: (int)times { NSLog(@"%@ is my favorite actor in the movie %@,  I saw it %i times.", actorName,  value,  times); } 如果你第一次看Objective-C, 肯定会琢磨不透上面的代码, 怀疑是不是写错了。 对于上面这个函数的定义: (1) '-'表示这个函数是实例函数( 类似非静态函数) , '+'表示这个函数是类函数( 类似静态函数) (2)( void) 表示这个函数没有返回值。 (3) 函数名是'doIt:', 而不是'doIt' (4) 参数用空格隔开 (5) 参数类型写在括号中 (6) 参数分内部参数和外部参数, 如电影名称, 内部参数是: value, 外部参数是: movieName (7) 函数的一个参数没有外部参数的名称, 有内部参数名。如: actorName。 调用: [objMovie doIt:@"成都.哇卡伊" movieName:@"毛飞碟说" timesSeen: 000] 从上面代码能够看出除了第一个参数, 其余的参数都能够加上外部参数名称用于区别。 从上面能够看出Objective-C和C#区别很大, 实在会令.NET程序员费解。Objective-C函数设计的优雅之处在于既有内部参数名又有外部参数名, 能够不用再在内部定义变量来存放函数的参数。 2.3 IOS系统优势 2.3.1 IOS模块性 IOS是Cisco路由软件的初始品牌名称。随着Cisco技术的发展, IOS不断扩展, 成为Cisco Central ENgineering( 中央工程部门) 所称之为的”一系列紧密连接的网际互连软件产品”。尽管在其品牌名识别中, IOS可能依然等同于路由软件, 可是它的持续发展发已使之过渡到支持局域网和ATM交换机, 并为网络管理应用提供重要的代理功能。必须强调的是, IOS是Cisco开发的技术: 一项企业资产。它给公司提供独特的市场竞争优势。当前许多竞争者许可IOS在其集线器和中由模块内运行, IOS已尼广泛成为网际互连软件事实上的工业标准。 2.3.2 灵活性 基于Cisco产品的工程开发以用户能够获得适应变化的灵活性。IOS软件提供一个可扩展的平台, Cisco会随着需求和技术的发展集成新的功能。Cisco能够更快地将新产品投向市场, 我们的客户能够享用这种优势。 2.3.3 可伸缩性 IOS遍布网际互连市场; 广泛的Cisco使用伙伴及竞争者在她们的产品上支持IOS.IOS软件体系结构还允许其集成构造企业互联网络的所有部分。Cisco已经定义了4个: 核心/中枢: 网络中枢和WAN服务, 包括大型骨干网络路由器和ATM交换机。工作组: 从共享型局域网移植到局域网交换( VLANs) 提供更优的网络分段和性能。) 远程访问: 远程局域网连接解决方案; 边际路由器、 调制解调器等。IBM网际互连: SNA和LAN并行集成, 从SNA转换到IP.Cisco的IOS扩展了所有这些领域, 提供了支持端到端网际互连的稳健性。 2.3.4 可操作性 IOS提供最广泛的基于标准的物理和逻辑协议接口——超过业界任何其它供应商: 从双绞线到光纤, 从局域网到园区网到广域网, Novell NetWare, UNIX, SNA以及其它许多接口。即是说, 一个围绕IOS建立的网络将支持非常广泛的应用。 第3章 系统分析 3.1 功能需求 此次程序设计任务是IOS平台下的微社交平台客户端设计, 程序将在真实手机运行调试。 此次程序设计用户界面要求较为友好, 由于针正确用户为iPhone智能手机用户, 因此程序的操作全部能够经过触控完成操作。本微社交平台客户端要求设计合理.在设计完成后, 要求程序能够实现登录功能。同时, 程序还必须能够实现首页信息获取, 用户资料, 好友资料, 发表动态, 用户的关注, 用户的粉丝, 转发动态, 评论动态, 收藏动态, 我发表的动态等。此次程序设计的操作系统要求为IOS4.3.5及以上版本。此次程序设计需要在Xcode7.1环境下开发。 本客户端的数据都是经过网络来自于融云的服务器, 产生的数据也是上传到融云的服务器, 在客户端在沙盒存一些身份识别信息。 基于系统需求分析, 该系统需要实现以下功能: (1) 用户登录: 当用户第一次使用该软件时, 会进入注册页面, 如果是老用户, 则能够直接登录。 (2) 发布动态: 发布动态是社交平台的基本功能, 用户将自己想要向外界传达的信息进行发布, 这是用户向外传播信息的最主要的途径与方法。 (3) 修改用户个人信息: 用户能够根据个人需要修改自己的信息, 包括用户名、 email、 心情、 以及上传头像或者更改为其它头像。 (4) 查看动态更新: 在首页要显示用户关注的博友的最近动态更新, 并能够查看动态的评论, 以及查看好友的主页。 (5) 转发动态: 转发动态是社交软件的基本功能之一, 用户将自己看到的感觉有用的信息进行转发, 不需要用户全部编写, 能够按照动态原文转发, 也能够在原文的基础上更改信息后进行转发, 这是用户发布动态的另一种较为方便的方法。 (2) 评论动态: 当用户对一篇动态有所感想时能够对这篇动态进行发表自己的评论, 用户能够写下自己的想法进行评论, 当评论成功时, 别的用户再次浏览该篇动态时就能够在文章的下面看到用户的评论, 这是动态进行互动的另一种方法。 3.2系统使用例图 在该软件系统中用户能够进行的操作有用户登陆、 查看首页、 查看动态详情、 发布新的动态、 对别人的或者自己的动态进行评论、 转发别人的动态、 查看别的用户详情护自己的详细信息, 该系统使用例图, 如图2所示。 图2 系统使用例图 第4章 系统设计细节 4.1 程序总体架构 在三层结构中(如图3所示), 解决了客户端/服务器模式面临的许多问题。经过划分客户与服务器之间的功能, 分布式计算提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下, 企业逻辑提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下, 企业逻辑集中地安装在应用服务器上, 这样就降低了客户端的负载, 同时对敏感信息的访问也能够得到很好的控制。 采用分布式计算有着多方面的技术优势[6], 包括: (1) 封装性; (2) 性能; (3) 全性管理。 在分布式计算模式中, 由于所有的商业逻辑都驻留在服务器端, 信息管理部就能够十分方便地监控服务器的运行情况, 很容易地控制访问服务器以及与服务器应用打交道人员的数量。这能够大大简化管理员对系统的管理, 减轻系统维护的工作量, 并确保系统的可靠运行。 图3 三层客户/服务器模型 软件设计时, 考虑到整个系统的延续性和可扩充性, 我们将系统应用体系分为三部分: 用户表现层、 数据访问层、 商业逻辑层。 ( 1) 用户表现层:处理用户界面的功能; ( 2) 数据访问层:在一般情况下指数据库; ( 3) 商业逻辑层:指在程序中做出职能决策的那一部分功能。 客户端的结构图如图4 所示。 图4 客户端结构图 4.2 模块功能设计 本客户端大致分为首页、 动态详情、 用户信息、 发布动态、 查看评论等模块, 分别负责不同的功能: 登陆模块: 访问用户的信息与数据需要经过用户的授权, 因此必须有用户登陆成功的模块本软件才能正常使用。 首页: 是用户浏览的界面, 会将用户所关注的人的动态按照时间先后顺序排列, 其中会显示动态的作者、 发布时间、 内容、 转发评论数量、 发布方式等。首页是用户使用最多的界面, 也是软件初次打开的默认界面。 动态详情: 当用户在首页浏览动态的时候, 点击某一条动态就会进入到动态详情的界面, 这个界面会更详细的展示用户所点击的那条动态, 而且提供转发和评论的功能按钮。 用户信息: 用户信息是展示用户的界面, 何以展示用户本身的信息并修改, 也能够查看任何用户感兴趣的用户。 发布动态: 用来发布新动态的界面, 转发和评论的时候也会用到这个模块。 查看评论: 用来浏览某一条动态的评论。 第5章 详细设计与编码 5.1 登陆注册模块 本软件采用客户端与服务器交互的方式授权来使访问用户的数据。效果如图5所示, 授权成功后就会进入主页。 图5 登陆页面 登陆具体代码如下: - (void)MyPerformWithIndentifier { [self.view endEditing:YES];//移除键盘 if (self.failureCount >= 2 && !self.myTestWord) { [self creatTextWord]; } if (self.myTestWord && ![self.myTestWord.putInTextWord.text isEqualToString:self.testResult] ) { [self creatWarnLabel]; self.warnLabel.text = @"验证码错误! "; [self.myTestWord clickChangeValue]; return; } if (self.passWordText.text.length <= 5 || self.userNameText.text.length == 0){ [self creatWarnLabel]; return; } //验证过程中, 提示正在登录。。。 [MBProgressHUD showMessage:@"正在登录"]; self.user.username = self.userNameText.text; self.user.password = self.passWordText.text; //--------------------------//下面数据需要网络返回 [BmobUser loginWithUsernameInBackground:self.user.username password:self.user.password block:^(BmobUser *user, NSError *error) { if (!user) { [self creatWarnLabel]; if (self.myTestWord){ [self.myTestWord clickChangeValue]; } self.failureCount ++; [MBProgressHUD hideHUD]; self.warnLabel.text = @"登录失败, 输入有误, 请检查! "; return; }else{ self.user.littleName = [user objectForKey:@"littleName"]; self.user.objectId = user.objectId; self.user.userToken = [user objectForKey:@"userToken"]; self.user.userPhoto = [user objectForKey:@"userPhoto"]; [self loginRongCloud]; } }]; } 如果没有账号则先进入注册页面, 如图6所示: 图6 注册页面 注册代码如下: #pragma mark - 点击注册 - (void)registerUser { if (self.rCount < 1) { return; } if (self.passWordText.text.length < 1) { return; } //1.验证完毕 self.user.username = self.userNameText.text; self.user.password = self.passWordText.text; self.user.email = self.userNameText.text; self.user.littleName = self.littleText.text; //1.注册成功后, token返回 //此处用email作为Id [LZYUtilitiesSingle getTokenFromRunClouldWithUserId:self.user.email userName:self.user.username portraitUri:self.user.userPhoto success:^(NSString *token) { self.user.userToken = token; if(self.user.userToken){ [self.user setObject:self.user.userToken forKey:@"userToken"]; [self.user setObject:self.user.littleName forKey:@"littleName"]; [self.user setObject:UserHeadImageUrl forKey:@"userPhoto"]; [self.user signUpInBackgroundWithBlock:^(BOOL isSuccessful, NSError *error) { if (isSuccessful) { self.user.userId = self.user.objectId; [self loginRongCloud]; }else{ NSLog(@"%@",error); [self creatWarnLabel]; self.warnLabel.text = @"连接失败, 请检查网络连通性或手机号是否重复"; } }]; } }]; } - (void)textFieldDidEndEditing:(UITextField *)textField { //验证邮箱 if (textField == self.userNameText) { if (![LZYVerifyInputText isEffectiveInfo:EMAIl withInfo:textField.text]){ [self creatWarnLabel]; self.warnLabel.text = @"邮箱格式错误"; }else{ BmobQuery *query = [BmobUser query]; [query whereKey:@"email" equalTo:textField.text]; [query findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error){ if (array.count > 0) { [self creatWarnLabel]; self.warnLabel.text = @"邮箱已经注册! "; }else { self.rCount ++; } }]; } } } 5.2 首页模块 在这个viewcontroller中, 主要是一个UITableview, 在UITableview中的每一个条目中展示每一条动态。 首先将获得的token存储到本地中, 这样的话用户只需在初次使用时需要登陆, 以后就能够直接获取数据了: #import <UIKit/UIKit.h> @interface LZYFirstViewController : UIViewController @end #import "LZYFirstViewController.h" #import "LZYArticlePhotoOutlineViewController.h" #import "LZYPublic.h" #import "LZYArticleEditViewController.h" #import "LZYUser.h" #import "LZYLogInViewController.h" #import "LZYArticleShowPhotoViewController.h" #import "LZYFriendsViewController.h" @interface LZYFirstViewController ()<LZYArticlePhotoOutlineDelegate> @property (nonatomic, strong) LZYArticlePhotoOutlineViewController *photoVC; @property (nonatomic, strong) UIScrollView *scrollView; @property (nonatomic, strong) LZYUser *user; @end @implementation LZYFirstViewController - (void)viewDidLoad { [super viewDidLoad]; self.automaticallyAdjustsScrollViewInsets = NO; // Do any additional setup after loading the view. [self makeNavAttributes]; self.view.backgroundColor = [UIColor whiteColor]; [self makeSubViews]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController.navigationBar setHidden:NO]; [self.tabBarController.tabBar setHidden:NO]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - 懒加载 - (LZYArticlePhotoOutlineViewController *)photoVC { if (!_photoVC) { _photoVC = [[LZYArticlePhotoOutlineViewController alloc] init]; _photoVC.delegate = self; } return _photoVC; } - (LZYUser *)user { if (!_user) { _user = [LZYUser defaultUser]; } return _user; } - (UIScrollView *)scrollView { if (!_scrollView) { _scrollView = [[UIScrollView alloc] init]; } return _scrollView; } #pragma mark - subViews - (void)makeSubViews { self.scrollView.frame = CGRectMake(0, 64, ScreenW, Scr
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服