启动页在语音聊天系统源码开发中是个很常见的需求,为什么对于语音聊天系统源码来说非常重要呢?首先我描述一下我在语音聊天系统源码开发过程中遇到的一些问题以及解决的步骤,到最后为什么要加启动页,看完你就明白了。
语音聊天系统源码的首页需要展示用户数量信息,意味着一打开语音聊天系统源码就得先执行登录的逻辑,只有登录了之后才能获取用户的相关信息。
在语音聊天系统源码启动的时候自动登录,目前没获取用户信息,所以不需要用户授权,这个逻辑放在根目录下的app.js的onLaunch方法中。只要启动语音聊天系统源码就会执行onLaunch方法。
做完之后发现了一个很严重的问题,就是app.js的onLaunch方法确实会在语音聊天系统源码启动的时候执行,但是首页也会是在app.json文件的pages中第一个页面也会同时执行,它不是阻塞的。会导致一个问题就是首页获取关注信息执行完了,登录的逻辑还没完,获取不到正确的数据。
于是把语音聊天系统源码登录的逻辑放到首页的onLoad方法中执行,在登录成功之后再去获取关注的数据,这样就能解决上面说的问题了。
后面又有一个需求,就是语音聊天系统源码分享功能,分享出去的页面中也需要用到用户信息,这个就尴尬了,分享出去的页面,用户进入的时候还是进入的这个页面,不会执行首页的逻辑,是拿不到用户信息的。
后面想了下,还是增加一个语音聊天系统源码启动页来做中转吧,登录的逻辑还是放到app.js中,只要语音聊天系统源码启动了就可以执行,无论是第一次进入还是通过分享的页面进入,都可以自动登录。
问题是如何实现阻塞功能,就是语音聊天系统源码登录之后再去跳转到其它的页面,思路就是通过定时器的方式去检测登录状态,成功了之后再跳转。
分享也是一样,分享出去的地址不再是本页面的地址,而是语音聊天系统源码启动页的地址,带一个参数,这个参数才是本页面的地址,当用户点击分享的语音聊天系统源码进入之后会先进入启动页,启动页中获取参数,等待登录逻辑执行完成之后,再根据参数跳转到分享的页面。
语音聊天系统源码启动页代码:
1. onLoad: function (e) {
2. var url = '/pages/index/index'
3. // 分享页面参数解码
4. if (e.page != undefined && e.page != "") {
5. url = decodeURIComponent(e.page)
6. }
7. var count = 0;
8. var inter = setInterval(() => {
9. count++;
10. if (count > 1000) {
11. clearInterval(inter);
12. wx.showToast({
13. title: "网络异常,请重启语音聊天系统源码",
14. icon: 'none',
15. duration: 2000
16. })
17. return;
18. }
19. var token = wx.getStorageSync("login_token");
20. if (token != null && token != "") {
21. clearInterval(inter);
22. // 跳转到toolbar
23. if (url == "/pages/index/index" || url == "/pages/city/cityAll/cityAll") {
24. wx.switchTab({
25. url: url
26. })
27. } else {
28. // 跳转到普通页面
29. wx.navigateTo({
30. url: url,
31. })
32. }
33.
34. }
35. },10);
36. }
当检查超过10秒钟,语音聊天系统源码登录信息还获取不到的时候就会给出提示,后续会加上一个让用户手动授权登录的页面。
这种方式勉强能实现需求,但不是最好的方式,问题一看就知道了,如果加了语音聊天系统源码启动页,意味着所有的入口都变成了启动页,就没有必要通过定时去检测了,直接将登录的逻辑放到语音聊天系统源码启动页中来执行,在success中在做跳转的逻辑,这样的方式才是最好的,具体代码我就不贴出来,大家明白就好。
具体的分享页面代码:
1. onShareAppMessage: function () {
2. let that = this
3. var page = encodeURIComponent('/pages/district/districtDetail/districtDetail?city=' + that.data.city + '®ion=' + that.data.region + '&districtName=' + that.data.districtName + '&estateType=' + that.data.estateType + "&isshare=1")
4. return {
5. title: '小区详情',
6. path: '/pages/startPage/startPage?page='+page
7. }
8. }
重点关注isshare=1这个参数,当直接打开语音聊天系统源码分享的页面时,用户点击左上角的返回按钮,基于现有的逻辑会退回到启动页,因为是从语音聊天系统源码启动页中转过来的,这是有问题的,要么就去掉这个返回按钮,要么就返回到首页。
所以对于语音聊天系统源码分享的页面带了一个参数识别,当是从分享页面进来的时候返回就到首页面。具体逻辑在页面的onUnload函数中,在页面卸载的时候进行跳转:
1. if (this.data.isshare == 1) {
2. wx.switchTab({
3. url: '/pages/index/index'
4. })
5. }
以上就是语音聊天系统源码启动页的作用以及需要启动页的一些背景,在语音聊天系统源码的使用过程中,给用户留下美好的第一印象很重要,这也是为什么一定要在语音聊天系统源码中添加启动页的原因,希望以上分享对大家有帮助。