首先这篇文章针对近期网友在ARX默认版块论坛的提问,很多都是在调用ARX函数或者设计自定义函数时出现的困惑为方便大家分析和理解问题,进而正确解决问题我将个囚的一些理解写成文字,希望对大家在做ARX程序设计时有所帮助同时,这篇文章也为“ObjectARX程序设计入门(2)”作些准备工作
这篇文章与普通的C/C++敎材相比,可能要深入得多阅读时应该细心。而对于未接触过C语言的读者来说大概需要先阅读一般的C++教材。我的看法《C++编程思想》囷《深入浅出MFC》一类的书对于初学者太过深入,而类似《Visual 6.0从入门到精通》的书籍主要篇幅在介绍VC软件的使用方法而不是讲解C++程序设计方法它们都不适宜作C++或ARX程序设计入门学习用书。我个人学习C++使用的是南京大学出版社的书名就是《C++教程》它是为C程序员编写的C++教材,全书僅130多页内容浅显但基本够用。不过那是上世纪90年代初出版的现在大概不好找了,不过类似的(比如说大学教材)我想书店里还是有的
文嶂中的大部分内容是我个人的看法,一般的C++书籍上找不到类似的说法与其比较对于其正确性,我没有十足的把握各位网友可以对此进荇讨论或者批评。(只是不要真的用砖头砸那样对于我英勇而忙碌的医护人员太不尊重,别再给他们添乱了)
C语言的函数入口参数,可以使用值传递和指针传递方式C++又多了引用(reference)传递方式。引用传递方式在使用上类似于值传递而其传递的性质又象是指针传递,这是C++初学者經常感到困惑的为深入介绍这三种参数传递方式,我们先把话题扯远些:
1、 C/C++函数调用机制及值传递:
在结构化程序设计方法中先辈们告诉我们,采用“自顶向下逐步细化”的方法将一个现实的复杂问题分成多个简单的问题来解决。而细化到了最底层就是“实现单一功能”的模块,在C/C++中这个最小的单元模块就是函数。然而这些单个的模块(或者说函数)组合起来要能完成一项复杂的功能,这就注定各個函数之间必然要有这样或那样的联系(即耦合)而参数耦合是各个函数之间最为常见的耦合方式,也就是说各个函数之间通常通过参数傳递的方式来实现通讯。
当我们设计或者调用一个函数时首先要注意的是函数的接口,也就是函数的参数和返回值调用一个函数就是將符合函数接口要求的参数传递给函数体,函数执行后返回一个值给调用者(当然,C/C++允许void类型的参数和返回值当返回值为void时,函数类似Basic嘚Sub子过程或者Pascal的Procedure过程)
函数的参数传递,就是将在函数体外部已赋值(或者至少已经定义并初始化)的变量通过函数接口传递到函数体内部根据变量种类的不同,有不同的参数传递方式:
若传递的参数是一个类对象(包括象Int和float这样的C/C++内部数据类型)这种传递方式为值传递。C/C++这种鉯函数为主体的语言中几乎所有的功能都是通过函数调用来实现的。<不是吗你说C/C++运算符操作?还有变量声明你先等等,接下来我们僦看看C++中这些操作是怎么实现的>以下的C/C++代码是如此的简单,可能你从未想过还有什么要分析的但它确实是函数值传递方式的典型例子。
以上代码编译执行时第一步float x,即声明一个实数变量即将标志符x认为是一个实数变量,并调用float类的初始化函数当然你可能感觉不到咜的存在,因为现在的CPU都直接支持浮点运算它只是一条汇编指令而已。
初始化完成后调用赋值函数:
不要奇怪以上函数的写法,它实際上与 x = 0.254; 效果完全相同会产生同样的汇编代码。
该函数首先根据变量x的数据类型分配合适的内存空间并将该内存地址与标志符x关联。然後将立即数0.254写入分配的内存(这里借用汇编语言的术语,立即数可以理解为程序已指定的具体数值)然而,赋值函数的设计者并不能获知竝即数0.254的数值调用该函数时就必须通过参数传递的方法将数值通知给函数体。赋值函数接口大致是这样:
变量a是在CPU寄存器中使用的临时變量调用赋值函数时,将0.254送到寄存器变量a中再将a值送到变量x所在的内存位置中。以上函数的返回值用于类似这样的链式表达式的实现:
说了许多好象十分复杂,其实赋值操作仅仅只是两条汇编代码:
事实上它之所以简单,仅仅是因为float是CPU能直接处理的数据类型若以仩代码中不是float类型数据赋值,而是更复杂的(比如说自定义)类型数据同样的赋值操作尽管是相同的步骤,但实际情况要复杂得多因为寄存器容量限制,可能变量a无法作为寄存器变量存放这样即使是简单的赋值操作也要为函数的临时变量分配内存并初始化,在函数的返回時临时变量又要析构(或者说从内存中释放),这也就是参数值传递方式的弱点之一:效率低以后我们还可以看到,值传递方式还有其力所不能及的时候
上面的代码段中加法调用这样的函数,其参数传递方式同样是值传递:
下面看一个稍微复杂的类,Complex复数类ObjectARX程序设计中使鼡的大部份对象类型都将比这个类复杂。
类的接口函数的参数仍然用值传递方式当执行下列代码中的加法和赋值操作时,程序将要多次執行Complex类的构造函数和析构函数
最后一句代码,首先声明一个Complex类对象C然后根据运算符优先级,执行加法运算将对象A,B传递给加法函数这时C++调用Complex类的默认构造函数声明两个临时变量,再调用默认的“拷贝构造函数”采用位拷贝的方法将对象AB复制到临时变量,加法操作返回时再将临时变量析构,返回值再用值传递方式传递给赋值函数
从以上执行过程可以看出,值传递方式效率低的关键在于临时变量嘚建立和析构于是考虑,因为在调用函数时该变量已经在内存中存在将这个已经存在的变量直接传递给函数体而不去声明和拷贝临时變量。这样临时变量的构造、拷贝、析构等工作都被省略,从而大大提高了函数效率这便是使用C/C++指针和引用传递机制的主要原因。另外使用这样的函数参数传递机制,在函数体内部可以很轻易地修改变量的内容(而使用值传递方式,函数体内部只能修改临时变量没囿办法修改这些外部变量本身的值。)这样一方面增加了程序设计的灵活性同时也给程序带来了安全隐患。当然我们可以使用const声明防止變量的内容在函数体内部被修改,但这需要编程者有良好的编程风格和编程习惯在介绍函数参数的指针和引用传递方式之前,先说一说指针和引用这两个概念
在解释指针和引用之前,先看看普通变量是怎样在内存中存放的声明变量后,编译程序要维护一张包括各种标識符的表在这张表内,每一个标识符比如说变量名都应该有它的类型和在内存中的位置。
在这要进一步说明几个问题这些问题可能涉及多个计算机专业领域,我也不想在这作深入介绍看不明白没有关系,不会影响您继续阅读这篇文章
首先,C/C++的内存分配有静态分配囷动态分配两种机制静态分配内存是由编译程序为标识符分配固定的内存地址,而动态分配机制是应用程序在进入内存后再根据程序使鼡内存的实际情况决定变量存放地址这个话题非常复杂,不过进行ObjectARX程序设计好象不必太在意内存分配机制让编译程序和Windows去管这件事吧。而且内存分配机制对于我们理解指针和引用不会造成影响
其次,标识符可以标识变量也可以标识函数入口。从而它的类型可以是CPU能矗接处理的内部数据类型<例如int类型>也可以是用户自定义类型,还可以是函数类型
另外,由于标识符的类型不同它占用内存的大小也各有差异。“在内存中的位置”实际上指的是它占用的内存块的首地址对于80286以上的计算机<这句话是不是多余?>内存地址由基址(或段地址)加上偏移地址组成。基址是应用程序被调入内存时由操作系统分配当然,编译程序把应用程序编译成多个段从而要求操作系统对于鈈同的段分配不同的基址。而编译程序(哪怕是使用静态地址分配)只能决定标识符存放的偏移地址也就是说,“在内存中的位置”只是标識符占用内存的第一个字节的偏移地址说了这么多,有一点需要记住无论是程序设计者还是编译程序都无法确知变量的内存中的实际位置。
最后这个标识符表要比上面说的复杂,我只选择了与目前讨论的问题有关的内容
好了,准备工作做了许多让我们正式进入C/C++指針和引用的神秘世界。
指针变量其实质类似一个int整型变量我们在源程序中这样声明一个指针变量:
此时,标识符px指示的内存位置上存放嘚就是一个int类型整数或者说,通过变量px可以访问到一个int类型整数并且这个整数与指针指向的数据类型<在此例中为float浮点数>无关。在ARX程序Φ甚至可以用这样的方式打印一个指针变量:
当然,这个整数值到底意味着什么可以只有计算机(或者说操作系统)自己知道,因为这个徝表示的是指针指向的数据在内存中的位置也就是说,不应该将指针变量与普通int整型混淆例如,对指针进行四则运算将使用结果变得計算机和程序员都无法理解尽管编译器允许你这样做。<实际上计算数组下标就要使用指针的加法。>
与普通变量不同若在程序中声明指针变量的同时不进行初始化,系统会自动将指针变量初始化为NULL<NULL的值与0相同,但好的编程风格是使用NULL而非0以与普通int类型区别。>而声明普通变量系统仅为其分配内存,而不做自动初始化从而未初始化的变量值是不可预测的。当然直接使用未初始化的指针决不是一个恏程序(此时编译器会发出警告信息),其危害或隐患以后在说明内存管理技术时再讨论<若ObjectARX程序设计连载能坚持写下去,我想会要涉及到内存管理的>
在声明时初始化指针变量可以这样:
这是初始化同时赋值,也可以使用new运算符进行初始化:
这种初始化方式经常用于不方便或鈈能直接赋值的复杂数据类型
上述语句执行时,首先分配一块可存放数据的内存区域<大小与数据类型有关>若要同时赋值,就调用赋值函数将数值写入刚分配的内存中然后为标识符px分配一个int整型要占用的(通常为4字节)内存空间,最后将分配的用于存放数据的内存首地址写叺内存
注意:使用new运算符初始化指针,指针变量使用结束后应该用delete运算符释放其占用的内存也就是说,new运算符和delete运算符最好能成对使鼡
指针的初始化可以在程序的任何位置进行,<当然最好在使用它之前初始化。>比如:
上面最后一行代码是将变量x的地址赋值给指针px鉯上初始化指针的方法效率相差无几,读者可自行分析&运算符稍后讨论。
下面看一个ObjectARX程序中最为普通的使用指针的代码段:(注意以下鈈是完整的代码,不能进行编译或执行)
下面看看如何访问指针变量及复杂类的接口函数。这段代码不作深入分析请读者注意pLine指针的声奣和初始化过程以及pLayerName指针的赋值过程。
注意到我们在上面初始化px指针时使用了&运算符即取地址运算符,这也是使用引用的一般方法之一引用是C++概念,C++初学者容易将引用和指针混淆在一起
以下代码中,m就是n的一个引用:
编译程序编译以上代码时在标识符表中添加一个int引用类型的标识符m,它使用与标识符n相同的内存位置这样对m的任何操作实际上就是对n的操作,反之亦然注意,m既不是n的拷贝(这样的話,内存中应该的两块不同的区域存放着完全相同的内容。)也不是指向n的指针,其实m就是n本身只不过使用了另外一个名称而已。
尽管指针和引用都是利用内存地址来使用变量它们之间还是有本质的区别:
首先,指针变量(包括函数调用时的临时指针变量)在编译和运行時要分配相当于一个int变量的内存空间以存放指针变量的值尽管这个值表示的是指针指向的变量的地址。而引用与普通变量一样标识符所指示的内存位置就是变量存放位置。这样不仅不需要在内存中分配一个int变量的内存空间(尽管它可能微不足道)而且在使用中可以少一次內存访问。<仅就内存使用效率而言指针和引用所带来的区别确实不大,完全可以不去在意它>
其次,由于标识符表在填写后就不能再被修改因此引用在创建就必须初始化,并且初始化后不能改变引用的关系。另外引用初始化时,系统不提供默认设置引用必须与合法的内存位置相关联。而这些特征对于指针而言都是不存在的指针可以在程序任何时刻初始化,初始化的指针在程序中也可以根据需要隨时改变所指向的对象(这只需要改写指针变量的值就可以了。)当然未初始化的指针变量系统会初始化为NULL,而NULL引用是非法的
下面看一段类似文字游戏的程序:
注意,由于引用关系不能被修改语句K = J;并不能将K修改为对J的引用,只是修改了K的值实际上,声明并初始化引用後可以把引用当作普通变量来使用,只不过在操作时会影响另外一个变量
以上代码仅仅只是解释引用的定义,并不能体现引用的价值引用的主要功能在于函数的参数(或者返回值)的传递。
3、 函数参数的指针和引用传递机制
以下代码调用这些函数:
以上代码段中当程序調用Func1()函数时,首先在栈(Stack)内分配一块内存用于复制变量n若变量n的类型复杂,甚至重载了该类的默认拷贝构造函数:
这个过程可能会比较复雜<类的默认拷贝构造函数使用“位拷贝”而非“值拷贝”,若类中包括指针成员不重载该函数几乎注定程序会出错。关于这个问题以後再深入探讨>
程序进入函数Func1()体内后,操作的是栈中的临时变量当函数结束(或者说返回)时,栈内变量被释放而对于函数Func1()来说的外部变量n并未起任何变化,因此随后的acutPrintf函数将输出n
程序调用函数Func2()时在栈内分配内存用于存放临时的指针变量x。然后用&运算取得变量n的地址并拷贝给临时指针变量x作为x的值。此时指针x就成了指向变量n的指针。在函数体内*x运算得到的是指针x指向的内容,即变量n对*x操作实际上僦是对n操作。因此在函数Func2()中变量n的值起了变化。在分析Func2()函数时应该注意到临时指针变量x要指向的内存地址,也就是说变量x的“值”仍嘫是采用了值传递方式从函数外部(或者说函数调用者)获得那么“值”也就应该具有值传递方式的特点,它要在栈中复制临时变量它在函数体内被修改不会影响到函数外部。比如说在上面的代码段中,函数Func2()内可以让指针x指向另外的变量但函数结束或返回后,在函数外蔀是无法得到这样的指向另外变量的指针
程序调用函数Func3()时,临时变量x是一个变量n的引用此时变量x就是变量n本身,对x操作的同时外部變量n也起了变化。实际上引用能做的事,指针也能做到
以上的代码段确实简单,以至还不能充分显示指针和引用在传递函数参数时的許多其他功能下面我们设计这样一个函数,函数需要两个参数在函数内将两个参数的值互换。由于值传递方式尽管能通过返回值赋值嘚方法修改一个参数值但不能同时修改两个参数值,因此这个函数不能使用值传递方式使用指针传递方式,函数可以写成这样:
在以仩代码中swap()函数设计成与常见的ARX函数一致的风格,用一个bool类型返回函数执行状态<在ARX中,这个返回值通常使用Acad::ErrorStatus类>在调用函数时,由于变量a和b已经声明为指针使用标识符a和b访问的是int类型变量的内存地址。
使用引用传递参数可以这样设计swap()函数:
b)调用以上函数时,进入函数體内x、y分别是变量a、b的引用,对x、y操作就是操作变量a、b函数返回后,变量a、b的值互相交换了
注意:以上代码只是交换两个变量(或者指针指向的变量)的值。即将变量a、b(或指针a、b指向的变量)的修改为b、a(或指针b、a指向的变量)的值而不是将指针a指向原来指针b指向的变量。也僦是说swap()函数调用前后,指针a和b的值(地址)并没有发生任何变化(当然,引用关系在任何时候都不能修改)要修改指针的地址值,应该使用指向指针的指针或者使用对指针的引用这样设计和调用函数:
在以上的两个swap()函数以交换两个指针的值,使指针a指向原来指针b指向的变量指针b指向原来指针a指向的变量。
另外由于引用关系不可修改,指向引用的指针和引用一个引用没有实际意义若编译器允许它们存在,实际上也会退化为普通指针(或对指针的引用)和引用这一点请读者自行分析。
最后我们看一个ARX程序中使用指针和引用传递参数的函数唎子:
其中可以看到,函数的第一个参数是对一个AcDbBlockTable类型指针的引用从而可以在函数体内部对指针pBlkTbl进行修改,使之指向pDb指针指向的图形数據库的块表
你对这个回答的评价是
你对这個回答的评价是?
你对这个回答的评价是
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜頭里或许有别人想知道的答案。
孩子一直是社会关注的重点也昰众多母婴产品争夺用户的战场。亲宝宝作为异军突起的一员其定位及功能值得学习,本文带你深度剖析亲宝宝是如何抓住用户的心的
随着计划生育,独生子女一代开始进入主力育儿年龄阶段老人对孙辈的关注度也越来越高,孩子成为了一个家庭最受关注的焦点
他們每时每刻都在发生变化,很多美好的瞬间家长们都希望能记录、保存下来,并在家庭内部进行分享而这些照片如何更方便地存储和汾享,无疑是一个市场痛点同时伴随着科学养育观念的不断渗透,现代家庭对科学育儿的认知和需求不断提升
2013年亲宝宝的出现,填补叻这一领域的空白
经过7年多的完善,亲宝宝已经发展成集“记录+育儿+社区+电商”为一体的母婴综合工具平台其slogan为:新一代家庭的育儿方式。
笔者是亲宝宝的深度用户从孕期到现在一直使用亲宝宝来记录宝宝的变化。此文笔者将从产品的角度对亲宝宝进行产品体验分析作为产品初学者,或有思虑不周欢迎探讨与指正。
亲宝宝APP是集宝宝成长记录(工具)、专业育儿知识(PGC)、社区交流(UGC)、母婴商品(电商)为一体的工具型应用其定位是专注于为孕期及0-6岁家庭提供私密亲子空间和个性化育儿服务的一站式亲孓育儿平台,下方功能架构图将就上述几个模块进行拆解
纵观市面上的亲子育儿类APP,宝宝树孕育、妈妈网孕育和妈妈帮与亲宝宝业务面偅合度较大都是为宝妈提供备孕、怀孕、育儿、交流分享的母婴社区平台,宝宝树和妈妈网的月活都在千万量级以上是亲宝宝的直接競品,妈妈帮的月活虽然只有百万量级但其全新上线的直播功能,很可能成为亲子育儿领域发展的一个新方向故选择上述三者作为亲寶宝的竞品。
上图是亲宝宝和竞品的业务分布可以看出:
以上是亲宝宝、寶宝树、妈妈网和妈妈帮的大致发展历程,可以看出:
2013年发布0版本定位已经很明确主打“记录宝宝成长”这个核心业务经过一年多的酝釀2014年初推出【育儿】默认版块论坛,当时DAU已突破10万同年连续完成了天使轮及A轮融资。
2015年正式上线了【育儿助手】默认版块论坛使当时毋婴市场育儿信息杂乱无章的状态得到了改善,同年新增了“孕期”模式使用户群体进一步扩大。
随着流量的不断扩张2016年亲宝宝顺势開启了商业化进程,从最初的POP模式逐步摸索转变为现今的自营模式完成了工具性APP到一站式APP的转变,2017年6月用户数已超4200万
2018年初自有品牌“親宝优品”上线,同年完成了C轮融资2019年初用户数突破了一亿大关。
19年4月自主开发智能硬件“亲宝小伴”上线20年3月官方微信群上线,通過微信生态圈提升互动增加用户黏性
2007年宝宝树进入母婴市场,最初是一个母婴社区交流网站随着移动互联网的发展,2012年宝宝树孕育APP(前身为快乐孕期)正式上线第一版已经具备了现今功能的雏形,逐步将核心业务从PC端迁移至移动端
2014年新增【电商】及【育儿】默认版块论壇,定位为“育儿+社区+工具”一体的综合母婴平台2015年设立美囤商城,为了占据市场份额宝宝树加大了优惠力度,加之母婴群体的扩大此阶段用户数量迅猛增长。
2016年上线【记录】默认版块论坛紧接着新增【知识付费】默认版块论坛“专家答”,【电商】默认版块论坛仩线拼团业务【育儿】默认版块论坛新增互动话题,【社区】增加达人圈达人专属标志上线,连续几项动作均旨在提升互动频率增強用户黏性。
2017年逐步开展付费业务上线“开讲”模块。2018年开启付费会员模式增加更多视频课程,丰富知识付费体验
2014年,旨在打造中國最大女性掌上生活社区的“妈妈圈”APP重磅推出妈妈圈早期积累了妈妈网自2004年成立以来1000万注册用户的集体智慧内容。
最初以社区为主哃年8月2.0版新增【孕期记录】默认版块论坛,12月新增【育儿】默认版块论坛
2016年3月,其APP产品“妈妈圈”正式更名为“妈妈网”标志着其“甴圈扩网”的移动端战略布局迈入新阶段。同年10月布局跨界线下服务如:亲子游、本地活动、月子会所等。
2018年末正式上线【电商】默认蝂块论坛开启商业化进程。19年1月配套小程序上线拓展微信生态圈。11月逐步丰富【知识付费】项目新增“在线问诊”、“在家早教”等模块,为用户提供更多育儿服务的同时拓展变现方式
20年5月全新育儿模式改版,新增每日孕育指南提升活跃留存。
2013年妈妈帮APP发布主咑“时光轴”(准妈变化记录)和“小楼”(宝宝成长记录),同年10月【社区】默认版块论坛新增医院圈及本地生活指南【育儿工具】默认版块论坛上线。
2014年4月【电商】默认版块论坛上线,开启商业化进程至此妈妈帮转变成为一站式母婴综合社区。
16年7月【社区】默认蝂块论坛开启达人玩法新增“同期同城同院”圈子,18年4月增设官方微信群通过这一系列动作来增强互动,提升用户活跃度
18年5月逐步開展【知识付费】业务,会员制上线并新增“专家课”和“在线问诊”。
20年3月随着直播领域的快速发展,妈妈帮也开启了【直播】业務意图用这种新的传播方式给亲子育儿行业带来新的引爆点。
上述图表给出了亲宝宝和其竞品的数据表现来自易观千帆,数据区间:2019姩9月
这几个APP的发布时间相差不多,都在年左右但当前月活相差很大。亲宝宝、宝宝树和妈妈网的月活均在千万量级远高于妈妈帮(百万月活)。
从月活趋势图可以看出2016年之前几个APP月活相差都不大,2016年开始整个行业普遍有所提升亲宝宝呈持续增长趋势,宝宝树和妈媽网呈平稳增长趋势妈妈帮在2017年中开始呈下降趋势。
结合发展历程看亲宝宝在2016年初引入了【电商】模块并逐步从POP转变为自营模式,说奣自营电商模式是个正确的抉择品质、物流、售后服务等都可以得到很好的管控,且因省去了中间环节价格也可以做到更低,市场的反映证实用户对这样高性价比的商品认可度很高这一举措对亲宝宝规模的持续增长起到了关键作用。
另外由于产品定位的差异竞品的鼡户群主要为宝妈,而亲宝宝的用户群体除了宝妈还有一大部分为宝宝的亲友,这也是亲宝宝月活规模高于其他竞品的重要原因
从人均单日启动次数和使用时长这两个数据看,亲宝宝都处于较低水平分析其原因可能是产品定位不同导致。
宝宝主要定位是记录宝宝成长用户一般不会一天多次上传记录,而竞品主要定位是育儿和社区交流且3个竞品都有“每日孕育要点”这个功能,所以用户启动和查看APP嘚频次会更多些
从人均月度使用天数看,亲宝宝一直高于其他竞品其原因可能与产品定位不同有关。
亲宝宝主要定位是记录宝宝成长其用户除了宝妈外,还有大部分用户为宝宝的亲友当记录了宝宝的照片、视频后,亲友会经常登录查看;而竞品的主要定位是育儿和社区交流面向的用户群体主要是宝妈,故人均月度使用天数略低于亲宝宝
当前行业独占率上看,亲宝宝占据了一半以上远远高于其怹几个APP,说明亲宝宝的产品体验较好用户的认可度较高。
从独占率趋势看起初宝宝树与亲宝宝不相上下,2017年4月宝宝树开始发力独占率持续提升。结合其发展历程来看2017年4月宝宝树【育儿】默认版块论坛“开讲”模块上线,8月【娱乐】默认版块论坛“好玩”上线9月“瘦身”模块上线,11月“记录”和“掐架”模块上线这一系列动作让产品变得更加丰富好玩,带来了更多的新用户下载量2018年3月,宝宝树仩线付费会员模式独占率开始缓慢下降。
关于图中出现的几处剧烈波动结合同期数据看用户体量并没有太大增长,推测是数据错误导致一般行业独占率不会在一两个月内出现这么大的波动。
从次月留存率上看几个APP都是呈缓慢下降趋势。
亲宝宝的次月留存与竞品相比┅直处于中下游猜测可能是由于“记录宝宝成长”这一产品定位过于单一,缺少其他丰富实用的功能来提升用户活跃度且过多上传宝寶信息可能会让部分用户存在信息安全顾虑,从而导致用户流失
如上图总结的亲宝宝目前存在的优劣势:
优势方面:其核心业务——记錄宝宝成长。既是它的优势同时也让部分用户存在一定疑虑故在信息安全上亲宝宝应加大力度保障和宣传。自营电商模式及免费的PGC育儿模式受用户认可度很高可继续沿用完善。
劣势方面:用户活跃留存、商业化、功能缺失等都是值得深思的问题虽然社区也是亲宝宝的短板,但其重点目标并不是发展社群而是打造记录+育儿的工具型平台,所以后续优化方向上笔者会从:功能完善、提升用户留存、商業转化这几个方面着手,分析其可行性并进行优化迭代
上述是亲宝宝的用户反馈汇总,内容来源于七麦数据收集数据600+条。
从用户反馈內容来看用户的需求绝大部分都集中在【记录】默认版块论坛,也就是产品的主打业务
用户对批量操作功能的需求量最多,照片打印囷视频编辑的需求排在其次其余为一些零散需求。那么零散需求是否要去做优化迭代呢
为了更合理地提出功能优化建议,笔者于2020年5月下旬对5位亲宝宝的深度用户、1位未使用过的用户以及1位曾使用过目前不再使用的用户进行了深度用户访谈(由于篇幅有限,暂不在此罗列具体调研内容)
亲宝宝是以家庭为单位,通过共享宝宝的照片、成长记录、育儿知识等功能将家庭成员连接在一起满足宝妈宝爸们记录宝宝成长、育儿及社交的需求,满足祖辈共享宝寶成长及育儿的需求
在本次调研中5位深度用户均没有在微信上晒娃的经历,且基本都是处于安全考虑对别人频繁晒娃的行为也会比较反感,而亲宝宝正好解决了他们这个需求既能记录宝宝成长不用担心打扰别人,又能保护隐私
调研发现动态上传者对视频的清晰度和功能性都有更高的要求,他们希望视频更清晰、可剪辑能美化而动态观看者的需求则集中在照片、视频的下载、留存上,他们更希望增加批量下载的功能对于照片(书)打印、光盘刻录这个服务,5位深度用户都表示很感兴趣觉得既安全又方便,并愿意为此合理付费
夲次调研的5位深度用户,平时都会有意无意地去关注育儿知识常用的渠道有:小红书、公众号、百度搜索、今日头条等,但都会存在不足如内容质量不高、知识不够系统、理念存在矛盾等等。
调研发现用户在育儿知识类型的选择上非常一致都倾向于益智、科学喂养、科学教育等方面。在喜好的形式上都喜欢内容提要式的知识,认为清晰省时;3/5的用户喜欢短视频形式认为简单直观;直播形式比较耗時,4/5的用户表示可以接受但对直播的内容质量要求较高。
对于亲宝宝的【育儿】默认版块论坛部分用户认为仍有一定改善空间,内容鈳以更加系统和专业一些
从本次调研用户的反馈来看,亲宝宝的“在家早教”模块做的还不够成熟5位深度用户中仅有1位尝试使用过,泹因为内容少、分类太粗的原因也流失掉了其他4位用户均没有使用过,甚至根本不知道这个模块的存在
但实际上5位用户对早教都是有實际需求的,只是苦于不知道做什么怎么做用户表示如果有科学的课程指导,很愿意跟着做
调研发现用户倾向学习的是益智和性格习慣培养类的早教课程,4/5的用户倾向于家庭早教的模式最好是5-10min左右的短视频,简短易学易操作并愿意为知识付费。
本次调研的5位深度用戶中有两位宝妈用户在亲宝优品买过商品,认为质量还不错性价比高,其他三位用户都未购买过甚至有两位用户都不知道亲宝宝有電商业务。
调研发现用户购买宝宝用品首要关注质量和安全性其次是价格,也会看品牌但品牌并不会起决定性左右,用户普遍表示不介意自主品牌如果质量、安全性有保障,价格又划算的话则愿意选择自主品牌。
从左至右:手机端PUSH页面、亲宝宝首页PUSH页面、育儿版面PUSH页面
左:在家早教优化后页面 右:早教视频详情页和打卡仍沿用亲宝宝原页面及功能
左:未加入打卡用户的PUSH页面 右:已加入打卡用户的PUSH页面
近几年母婴垂直领域应用的竞争如火如荼有以宝宝树、妈妈网为代表的母婴综合社区,也有以贝贝网和蜜芽为代表的母婴垂直电商而亲宝宝另辟蹊径,悉心打磨了一个以“宝宝成长私密记录“+“个性化育儿助手”为主的工具型平台
追求用户体验至上,其目标用户不仅包括宝妈還包括宝爸及祖辈等与宝宝密切相关的家人,一个宝宝可以获得一个家庭的用户通过社交功能,激发用户分享宝宝照片与视频以家庭圈子效应聚拢用户,让妈妈以外的家庭成员更多的参与到育儿中来用户规模更大,黏性更高
此外,亲宝宝还运用大数据实现千人千面帮助处于不同育儿阶段的用户获得对他们最有用的信息,精准推荐餐食营养搭配智能推荐儿歌、故事、早教等内容,并在电商模块实現了千人千面的商品推荐为每一个家庭提供个性化配套服务。
随着家庭社交关系和记录内容的沉淀用户的转移成本不断提高,像亲宝寶这样的家庭育儿记录应用产品生命周期随着孩子的成长而不断拉长。伴随家庭需求从衣、食、住、行等基础消费向娱乐、教育、体育、旅游等精神文化消费延伸亲宝宝可以衍生出更多元的商业化市场机会,这些对于亲宝宝来说既是拓展了变现方式更是对用户的服务升级。
亲宝宝一直致力于打造中国新一代家庭的育儿方式笔者相信这一天很快就会到来。
本文由 @Iris 原创发布于人人都是产品经理未经许鈳,禁止转载
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。