一、引言
作者在开发微信小程序《目的地到了》的过程中遇到过许多问题,这里讲讲一些技术和经验问题。
基本目录机构:
二、问题
1、定位使用
获取定位一定要在app.json里面申明,不然是没办法获取定位信息的
"requiredPrivateInfos": ["getLocation"
],
2、getLocation坐标系
getLocation获取坐标的时需要指定坐标系,不然会偏移很多。作者一开始用的wgs84也称为GPS坐标系,是全球通用的地理坐标系。但是定位明显不准。
后来就换成了'gcj02',表示国测局坐标系,即火星坐标系。
wx.getLocation({type: 'gcj02',success(res) {console.log(res)const latitude = res.latitudeconst longitude = res.longitudeutil.request(api.*, {nowLng: longitude,nowLat: latitude}, 'POST').then(function (res) {},fail(err) {},})
3、定位权限
定位获取不到是要让用户去开启权限的,作者会让他跳转到主页面,给他一个按钮
wx.getSetting({success: function (res) {var statu = res.authSetting;console.log(statu)if (!statu["scope.userLocationBackground"]) {wx.showModal({title: '请进入《我的》-《权限设置》,将定位权限设置为《使用小程序期间和离开后》,否则无法知道您是否到达目的地附近!',content: '是否前往授权?',success: res => {if (res.confirm) {console.log("准备进入权限设置");wx.switchTab({url: "/pages/ucenter/index/index"});} else {wx.navigateBack();}}})}}})
按钮点击可以打开微信的设置界面
goWxSetting:function(e){wx.openSetting({success: function (data) {});
4、showToast截断
提示用户信息的时候用showToast基本上只能显示10个字符左右,多了直接给你截断了,所以要么用showModal显示点击框,那个展示的多,就是用户要多一个点击的动作。
wx.showToast({title: res.data,icon: 'success',duration: 5000,mask: true});
wx.showModal({title: '再次到这里',content: '是否生成任务?',success: res => {}})
5、监听位置变化
启动位置检测和监听变化是两个api组合使用,也要在app.json里面设置申明
"requiredPrivateInfos": ["getLocation","startLocationUpdateBackground","onLocationChange"
],
然后开启监听,在一些处理完成之后可以停止监听
wx.startLocationUpdateBackground({let that = this;success(res1) {console.log("开启前后台位置更新", res1)wx.onLocationChange((res2) => {// 业务处理if(){that.stopListen();}})},fail(err) {console.log('startLocationUpdateBackground失败')console.log(err)},})stopListen() {const callback = (res) => {console.log('offLocationChange');console.log(res);};wx.offLocationChange(callback);wx.stopLocationUpdate({success(res) {console.log('stopLocationUpdate 成功');},fail(res) {console.log(`stopLocationUpdate fail: ${JSON.stringify(res)}`);}});},
6、停止运行
作者使用前端轮训、WebSocket长链接等方式想要让前端保持一定的频率和后端通信。
但是实际上这是不行的,到线上发布之后就会发现,真机情况下几分钟就会停止前端的线程运行。只有监听位置变化的api是可以持续运行的。
7、个人小程序限制
不给拿用户手机号、不给有聊天评论功能相关的页面、不给引导用户。反正是各种限制,不然提交代码审核的时候,审核一定不会通过,还会让你改。
8、审核时间
个人经过多次审核,发现周末审核的通过率比工作日高很多,工作日那些审的人基本都不看你写的什么,再有理有据也没用。
9、隐私提示
一定要给用户提示隐私策略相关,让他随时能点击,不然代码审核通过不了
<view class="container"><view class="myOne"><view class="my-div"><text class="yhxy">用户协议</text><view>一、总则<view>1、用户在注册及使用前请认真阅读本协议,确保充分理解本协议中所有条款。除非您接受本协议所有条款,否则您无权注册、登录或使用本协议所涉服务。您的注册、登录、使用等行为将视为无条件接受本协议所有条款的约束。2、除非另有明确规定,本产品所推出的新功能、新服务,均无条件的使用本协议。3、本小程序保留在任何时候修改本协议条款的权利,且无需另行通知。在本小程序修改协议条款后,如果您不接受修改后的条款,请立即停止使用本产品提供的服务,继续使用本产品提供的服务将被视为接受修改后的协议。</view></view><view>二、用户注册<view>1、用户应当同意本协议的全部条款并按照页面提示完成全部注册程序(未成年人应与法定监护人共同完成)。用户在注册过程中点击“下一步”按钮即表示完全接受本协议全部条款。2、用户在使用本服务前需要注册一个本产品账号。本产品账号应当使用手机号码绑定注册,请用户使用尚未与本产品账号绑定且未被本产品根据本协议封禁的手机号码注册账号。本产品可以根据用户需求或产品需求对账号注册和绑定的方式进行更改,而无须事先通知用户。3、用户在使用本产品服务过程中应保证各项服务业务所需信息的真实性,如果因信息不真实而引起的问题,以及问题发生所带来的后果,本公司不负任何责任。4、在用户注册及使用本产品时,要搜集能识别用户身份的个人信息以便系统可以在必要时联系用户,或为用户提供更好的使用体验。系统搜集的信息包括但不限于用户的性别、年龄、出生日期、所在城市;系统同意对这些信息的使用将受限于用户个人隐私信息保护的约束。</view></view><view>三、服务内容<view>1、本服务的具体内容由本产品根据实际情况提供,包括但不限于用户使用本产品等。本产品可以对提供的服务予以变更,且本产品提供的服务内容可能随时变更,用户将会收到关于服务变更的通知。2、除非本协议另有其他明示规定,本公司所推出的新产品、新功能、新服务,均受到本协议条款之规范。</view></view><view>四、服务变更、中断或终止<view>1、鉴于网络服务的特殊性(包括但不限于服务器的稳定性问题、恶意的网络攻击等行为的存在及其他无法控制的情形),用户同意本小程序有权随时中断或终止部分或全部的服务。2、本小程序需要定期或不定期地对提供服务的系统或相关设备进行检修或维护,如因此类情况而造成服务在合理时间内的中断,本小程序无需为此承担任何责任。3、如发生下列任何一种情形,本小程序有权随时变更、中断或终止向用户提供本协议项下的服务而无需对用户或任何第三方承担任何责任:(1)根据法律规定用户应提交真实信息,而用户提供的个人资料不真实、或与注册时信息不一致又未能提供合理证明;(2)用户违反相关法律法规或本协议的约定;(3)按照法律规定或有权机关的要求;(4)出于安全的原因或其他必要的情形。</view></view><view>五、用户个人隐私信息保护<view>1、依据法律的规定,我们将在特定情形下收集、使用和披露您的个人信息。以下条款描述了我们如何收集、使用和披露您的个人信息。2、信息收集(1)用户提供我们会对您直接提供的信息进行保存。比如:我们会记录您的注册信息、寻求客服或者其他和我们沟通的记录。记录信息的种类包括:头像、昵称、性别、出生日期、所在地区以及其他您选择提供的信息。我们收集、使用和披露个人信息是为了通过创建账户、识别用户、回应查询和邮件等方式来为您提供服务。当你接触或者使用我们的服务时,我们将自动收集您的信息包括:Log信息(我们记录所有您使用服务时的log信息,包括浏览器信息、使用时间、浏览的网页、IP地址及来源)。我们使用多种技术记录信息,包括但不限于:向您的移动设备种Cookies。Cookies是一些存在您的硬件上的小数据包,用以帮助我们提高服务的质量及您的使用体验,了解在哪些区域和功能上受欢迎,以及统计流量等。</view></view><view>3、信息使用<view>(1)除本隐私政策未载明或本隐私政策的更新未能首先通知您的情况下,您的个人信息将不会用于其他目的。(2)匿名汇总统计数据不是本小程序所定义的个人用户信息,我们将为多种目的,包括但不限于分析和使用模式的报告等,来保存和使用此类信息。本小程序保留以任何目的或单方面许可第三方使用和披露匿名汇总统计数据的权利。(3)您在本产品中上传的信息,有可能会损坏您或他人的合法权益,您必须充分意识此类风险的存在。您明确同意,自行承担因上传信息所存在的一切风险及后果,本小程序无需承担任何责任。</view></view><view>4、法定披露<view>虽然我们会尽最大努力保护用户隐私,但当我们有理由相信只有公开个人信息才能遵循现行司法程序、法院指令或其他法律程序或者保护本小程序、本小程序用户或第三方的权利、财产或安全时,我们可能披露个人信息。</view></view><view>5、信息安全<view>我们会采取合理的实际及电子手段以及规程保障措施来保护您的个人信息。 虽然通过因特网信息传输数据并非100%安全,但我们已经采取并将继续采取商业范畴内合理的努力来确保您的个人信息得到保护。</view></view><view>6、未成年人隐私保护<view>本小程序重视对未成年人个人隐私信息的保护。本小程序将依赖用户提供的个人信息判断用户是否为未成年人。任何18岁以下的未成年人注册账号或使用本服务应事先取得家长或其法定监护人(以下简称“监护人”)的书面同意。除根据法律法规的规定及有权机关的指示披露外,本小程序不会使用向任何第三方透露未成年人的个人隐私信息。</view></view><view>六、内容规范<view>1、本项规范所述内容是指用户使用本服务过程中所制作、上载、复制、发布、传播的任何内容,包括但不限于账号头像、名称、个性签名等注册信息及认证资料,或文字、语音、图片、图文等发送、回复消息和相关链接页面,以及其他使用本产品账号或本服务所产生的内容。2、用户承诺使用本产品的服务时必须符合中华人民共和国有关法律法规,不得利用本产品的服务制作、上载、复制、发布、传播以下内容:<view>(1)反对宪法所确定的基本原则的;(2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;(3)损害国家荣誉和利益的;(4)煽动民族仇恨、民族歧视,破坏民族团结的;(5)破坏国家宗教政策,宣扬邪教和封建迷信的;(6)散布谣言,扰乱社会秩序,破坏社会稳定的;(7)散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;(8)侮辱或者诽谤他人,侵害他人合法权益的;(9)含有法律、行政法规禁止的其他内容的。</view>3、用户不得利用本产品账号或本服务制作、上载、复制、发布、传播下干扰本产品正常运营,以及侵犯其他用户或第三方合作权益的内容:<view>(1)含有任何性暗示的;(2)含有辱骂、恐吓、威胁内容的;(3)含有骚扰、垃圾广告、恶意信息、诱骗信息的;(4)涉及他人隐私、个人信息或资料的;(5)含有其他干扰本服务正常运营和侵犯其他用户或第三方合法权益的。</view></view></view><view>七、使用规则<view>1、用户在本服务中或通过本服务所传送、发布的任何内容并不反映或代表,也不得被视为反映或代表本小程序的观点、立场或政策,本小程序对此不承担任何责任。2、用户在使用本产品时,必须遵守中华人民共和国相关法律法规的规定,同意将不会利用本产品进行任何违法或不正当的活动,包括但不限于下列行为:(1)干扰或破坏有关服务,或与有关服务连接的任何服务器或网络,或与有关服务相关的任何政策、要求或规定;(2)采集并存储涉及任何其他用户的个人信息,以用于任何被禁止的活动;(3)故意或非故意违反任何相关的中国法律、法规、规章、条例等其他具有法律效力的规范。3、用户须对利用本产品账号或本服务传送信息的真实性、合法性、无害性、准确性、有效性等全权负责,与用户所传播信息相关的任何法律责任由用户自行承担,与本小程序无关。如因此给本小程序或第三方造成损害的,用户应当依法予以赔偿。4、本产品提供的服务中可能包括广告,用户同意在使用过程中显示本产品和第三方供应商、合作伙伴提供的广告。除法律法规明确规定外,用户应自行对该广告信息进行的交易负责,对用户因该广告信息进行的交易或前述广告商提供的内容或遭受的损失或损害,本小程序不承担任何责任。5、用户为使用本产品,须自行配备进入国际互联网所必需的设备,包括电脑、手机及其他与接入国际互联网有关的装置,并自行支付与此服务有关的费用。</view></view><view>八、免责声明<view>1、对于经由本产品服务而传送的内容,本小程序不保证前述内容的正确性、完整性或品质。用户在接受有关服务时,有可能会接触到令人不快、不适当或令人厌恶的内容。在任何情况下,本小程序均不对任何内容负责,包括但不限于任何内容发生任何错误或纰漏以及衍生的任何损失或损害。用户使用上述内容,应自行承担风险。2、用户明确同意其使用本产品所存在的风险及其后果将完全由其自己承担,本小程序对用户不承担任何责任。如因用户违反有关法律、法规或本协议项下的任何条款而给任何其他第三人造成损失,用户同意承担由此造成的损害赔偿责任。3、本小程序尊重并保护用户的个人隐私权。但因恶意的网络攻击等行为及其他无法控制的情形,导致用户隐私信息泄露的,用户同意本小程序不承担任何责任。4、对于因电信系统或互联网网络故障、计算机故障、计算机系统问题或其它任何不可抗力原因而产生损失,本小程序不承担任何责任,但将尽力减少因此给用户造成的损失和影响。</view></view><view>九、知识产权声明<view>1、本产品服务中包含的任何文字、图表、音频、视频和软件(包括但不限于软件中包含的图表、动画、音频、视频、界面实际、数据和程序、代码、文档)等信息或材料均受著作权法、商标法和其它法律法规保护,未经相关权利人书面同意,用户不得以任何方式使用该信息或材料。2、本协议未授予用户使用本产品任何商标、服务标记、标识、域名和其他显著品牌特征的权利,任何人不得擅自(包括但不限于:以非法的方式复制、传播、展示、镜像、上载、下载)使用,否则本小程序将依法追究法律责任。3、除本协议明确允许以外,用户不得以任何形式或任何方式对本产品部分或全部内容进行修改、出租、租赁、出借、出售、分发、复制、创作衍生品或用于任何商业用途。</view></view><view>十、法律适用<view>1、本协议的订立、执行和解释及争议的解决均应适用中国法律并受中国法院管辖。如服务条款任何一部分与中华人民共和国法律相抵触,则该部分条款应按法律规定重新解释,部分条款无效或重新解释不影响其余条款法律效力。2、用户和本小程序一致同意本协议。在执行本协议过程中如发生纠纷,双方应友好协商解决;协商不成时,任何一方可直接向所在地的人民法院提起诉讼。</view></view><view>十一、其他规定<view>1、本协议中的标题仅为方便而设,在解释本协议时应被忽略。2、本协议及其修改权、最终解释权归本小程序所有。</view></view></view></view>
</view>
<view class="container"><view class="myOne"><view class="my-div"><text class="yhxy">隐私政策</text><view>本应用非常重视用户隐私政策并严格遵守相关的法律规定。请您仔细阅读《隐私政策》后再继续使用。如果您继续使用我们的服务,表示您已经充分阅读和理解我们协议的全部内容。</view><view>本小程序尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更优质的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。</view><view>1. 适用范围<view>(a) 在您注册本应用小程序帐号时,您根据小程序要求提供的个人注册信息。(b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据。(c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。(d) 本应用严禁用户发布不良信息,如裸露、色情和亵渎内容,发布的内容我们会进行审核,一经发现不良信息,会禁用该用户的所有权限,予以封号处理。</view></view><view>2. 信息使用<view>(a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人登录信息。如果我们存储发生维修或升级,我们会事先发出推送消息来通知您,请您提前允许本应用消息通知。(b)本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据。(c) 为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息。(后者需要您的事先同意)</view><view>3. 信息披露<view>在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:(a) 未经您事先同意,我们不会向第三方披露。(b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息。(c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露。(d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露。(e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷</view></view><view>4. 信息存储和交换<view>本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。</view></view><view>5. Cookie的使用<view>(a)在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies,以便您能登录或使用依赖于cookies的本应用平台服务或功能。本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。(b) 您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能(c) 通过本应用所设cookies所取得的有关信息,将适用本政策。</view></view><view>6.本隐私政策的更改<view>(a)如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。(b) 本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。</view></view><view>请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。</view><view>感谢您花时间了解我们的隐私政策!我们将尽全力保护您的个人信息和合法权益,再次感谢您的信任!</view></view></view></view>
</view>
10、申请顺序
如果需要申请startLocationUpdateBackground进行前后台位置更新,最好先申请startLocationUpdate。
别想着一步到位。不先申请startLocationUpdate前台更新,然后说明不能实现效果的理由。startLocationUpdateBackground不会申请通过的。
这个也能理解,没有用startLocationUpdate测试过,凭什么说startLocationUpdateBackground才能满足你的需求,而且审核人员不会给你明说,只会一次次拒绝你。
三、总结
微信小程序的规则还是很多的,祝大家都能做出自己心仪的小程序,有兴趣可以跟作者讨论。