<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * * * * * ## 記錄 ### Page.data 與 Page.onLoad 是同步的 `Page.data` 與 `Page.onLoad` 共存亡,頁面卸載時 `Page.data` 也會清除,頁面加載時 `onLoad` 執行,此后只要頁面沒卸載,`Page.data` 就一直在,`onLoad` 也不會在執行,所以說 `Page.data` 與 `onLoad` 是同步的。根據這點,我們把頁面數據 放在 `onLoad` 里面初始化,數據的有效期就等同于頁面的有效期。`onLoad` 就相當于瀏覽器的標簽頁,打開時執行一次,如果關閉,再打開也會執行一次,但是切換到其標簽在切換回來就不會執行。 路由操作里的關閉頁面,其實就是卸載頁面。 * * * * * ### 多頁應用與網頁的思考 > 如果小程序是一個多 tab 應用(客戶端窗口的底部或頂部有 tab 欄可以切換頁面),可以通過 [tabBar 配置項](https://developers.weixin.qq.com/miniprogram/dev/framework/config.html#全局配置) 指定 tab 欄的表現,以及 tab 切換時顯示的對應頁面。 多tab應用其實就是多頁應用,這有點像一個瀏覽器開多個標簽打開網頁(瀏覽器每個標簽都有一個單獨的進程),這樣看的話,其實很多APP都是這樣的,比如微信,支付寶,QQ等等,下方的 tab 欄就是多個獨立頁面,點進去就是其他的內頁面。這就和瀏覽器的多個標簽一模一樣。 傳統的網頁只有一個首頁,那么APP就有多個“首頁”,每個tab也就是一個“首頁”,而第一個tab頁就是 **第一首頁**。 所以如果要以理解網站的思路去理解app的話,可以這樣理解:app就是一個開了多個標簽的瀏覽器,標簽數量就為tab數量,內頁間可以相互跳轉,就和網頁一樣,也可以和tab頁相互跳轉,普通的頁面跳轉可能并不會關閉當前頁面,打開過的頁面在內存中,系統會管理內存,可能會在合適的時機回收打開的頁面。 * * * * * ### 無打斷的操作體驗 當前沒有授權的才需要跳轉到login頁面,因為需要用戶點擊 `button.open-type.getUserInfo` 按鈕。已經同意授權了的可以在當前頁面直接登錄,這樣不至于打斷當前操作。 只要本地 `user_info` 和 `session_id`(本地和服務器的會話憑證) 存在就可以認為是登錄的,這個用戶信息同步要到 `app.globalData.userInfo` 上。**如果服務器登錄態失效了,在此后的網絡請求中是能發現的,所以這么做沒有問題。** 不打斷操作的做法: `api.request()` 發現需要登錄時,`wx.getSetting()` 檢測授權狀態,已授權 就直接當前頁面完成 oauth登錄,否則跳轉到login頁面去完成 oauth登錄。(其實還可以優化,當前頁面的按鈕做成 `button.open-type.getUserInfo` 就可以了,比如 立即預約按鈕,這樣直接在當前彈出授權詢問框,而無需跳轉了)。 ``` // bindGetUserInfo回調里面判斷用戶是否授權,未授權會彈出授權框,授權后完成oauth登錄,然后進行預約按鈕邏輯 <button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">立即預約</button> ``` 另外,能不讓用戶登錄的就無需登錄。 * * * * * ### 操作按鈕即是授權按鈕 wxml文件: ``` <button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" hover-class="none" data-call="buy" data-id="12">立即購買</button> ``` js文件: ``` buy: function (e, res) { log.s('index buy ', e); log.s('index buy ', res); }, bindGetUserInfo: function (e) { var that = this; if (e.detail.errMsg == 'getUserInfo:ok') { log.w('my > bindGetUserInfo() 用戶同意授權! ', e) var call = e.target.dataset.call; // 需要調用的操作 call = that[call]; // 需要登錄才能進行的操作,如:that.buy() that.ensureLogin(call, e); } else { log.e('my > bindGetUserInfo() 用戶拒絕授權! ', e); wx.showToast({ title: '需要收取才能繼續操作!', icon: 'none', duration: 4000, }); } }, // 確保登錄才能繼續操作 ensureLogin: function (call, e) { app.ensureGetUserInfo(function (res) { log.s('index ensureLogin:s ', res); call(e, res); }, function (res) { log.e('index ensureLogin:e ', res.errMsg); if (res.errMsg == 'scope.userInfo:false') { // 不會到這兒來。若不授權是調用不到這兒的 } else { // 彈出錯誤! wx.showToast({ title: '登錄出錯!', icon: 'none', duration: 2500, }); } }); }, ``` 能觸發“需要登錄的網絡請求的”操作按鈕,都做成 `button.open-type.getUserInfo` 按鈕,方法都是 `bindgetuserinfo` 方法,確保已授權登錄才能繼續操作。 不過這可能出現,當前登錄態有效,但授權過期的情況,這時本來是無需授權的,只有需要登錄無授權情況下才需要授權,現在也無故授權一次,不過這種情況可能性很小,就算是這樣,授權一次又怎么樣,所以無需擔心這個問題。 * * * * * ### 數據一致性與全局數據共享規范 `app.globalData` 數據 所有頁面共享,既能訪問也能更改,全局數據的存取如果沒有規范的話,會很容易造成數據不同步。 例如 `Page.data.x: app.globalData.x` 頁面渲染時,初始化數據來源于全局,這樣的做法很危險,如果全局數據被其他頁面修改了,這邊不能得到更新,畢竟全局沒有 `setData()` 方法。 等等問題,所以對于全局數據的共享有必要建立一個規范: 1. 對于全局數據的讀取和更改,只能使用由app自身提供的全局方法對數據進行操作,不能直接使用 `app.globalData` 。 2. 頁面初始化數據不能使用全局數據或方法,并且也不要使用其他任何方法和計算表達式,請在 `onLoad` 中通過 `setData()` 設置。 規范不知強制的,但是遵循統一的規范有利于開發和維護。 >[tip] app實例只能在/pages/內的頁面中獲取和使用。 * * * * * ### 授權按鈕可以坐在邏輯按鈕上 把需要登錄操作的按鈕做成授權按鈕 `button.open-type.getUserInfo` 也是可以的,這樣就無需跳轉到登錄頁面了,這樣才是終極的無打斷操作解決方案。 還可以通過微信授權獲取用戶的手機號碼 `button.open-type.getPhoneNumber` 按鈕,手機號碼有效性的驗證短信由微信發送,體驗比較好。 ``` <button open-type="getPhoneNumber" bindgetphonenumber="bindGetPhoneNumber">獲取手機號碼</button> // 彈出授權詢問框完成用戶授權 <button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">一鍵登錄</button> ``` * * * * * ### sessionKey理解以及處理方式 `sessionKey` 是微信幫用戶儲存在微信的服務器上的,有效期不對外公開,只有微信自己知道。通過 `code` 換取后 `sessionKey`,我們服務器也會給用戶儲存一份,也就是說,`sessionKey` 只在兩個位置存放,一個在微信服務器,一個在我們的服務器。 oauth登錄時就暫時不檢測密匙有效性了 `wx.checkSession` ,**即使是過期了也沒事 ,反正服務端oauth認證時會獲取新的密匙,oauth流程中的校驗與解密操作是不會出現 `sessionKey` 無效的情況的。** 以后其它地方有需要的話再主動檢測密匙狀態,如解密分享接口的數據。 * * * * * ### 服務端的登錄態 服務端的登錄態通常是session機制,在瀏覽器上一般都是cookie-session機制,瀏覽器上有一個名為 `PHPSESSID` 的cookie,內容為 `session_id`,即:`cookie{PHPSESSID: session_id}` ,服務器就是一句這個會話id作為標識,和瀏覽器進行認證和保持登錄狀態的。 我們可認為服務端的登錄態只要不退出就是永久的。當然也可以自定義登錄態,如多長時間沒活躍自動下線,另外還有一種情況會導致登錄會話失效,比如服務器故障導致session文件丟失,或者php cg自動刪除session文件等。 所以只要我們本地的 `session_id` 一直存在,就可以一直和服務器保持登錄狀態。 * * * * * ### 能保存用戶的openid到本地嗎? Oauth登錄過程主要是調用 `wx.login()` 獲取臨時code,然后在服務端通過 **開放接口** 換取用戶的openid和臨時的session_key,加入我們將用戶的openid存放在本地,只要一直存在,不就可以一直能Oauth登錄,而無需再調用 **開放接口** 了嗎? 可以是可以,但這樣就沒有最新的session_key了,假如過期了就不能據此解析用戶的加密數據,無法得到用戶的最新信息了,只是能完成Oauth登錄而已,不過Oauth登錄也只需要openid。 但這樣不得不考慮另外一個問題,那就是openid能不能這樣泄露,會不會有安全問題。 一般不考慮這樣做吧。 * * * * * #### “跳轉”頁面生命周期 | 名稱 | 功能說明 | | --- | --- | | [wx.switchTab](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab.html) | 跳轉到 tabBar 頁面,并關閉其他所有非 tabBar 頁面 | | [wx.reLaunch](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.reLaunch.html) | 關閉所有頁面,打開到應用內的某個頁面 | | [wx.redirectTo](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.redirectTo.html) | 關閉當前頁面,跳轉到應用內的某個頁面 | | [wx.navigateTo](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html) | 保留當前頁面,跳轉到應用內的某個頁面 | | [wx.navigateBack](https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html) | 關閉當前頁面,返回上一頁面或多級頁面 | 只要是跳轉都會觸發頁面加載,如 `wx.navigateTo` 會觸發頁面 `onLoad` `wx.switchTab`:如果目標 tab頁沒有關閉,則不會觸發頁面 `onLoad`,否則會觸發。會觸發onShow。 `wx.navigateBack` 也不會觸發頁面 `onLoad`,這跟后退按鈕是一樣的,所以一些需要檢測數據變化的操作不能放在 `onLoad` ,而要在 `onShow`。 所有都會觸發 `onShow` ---- [微信小程序30分鐘從陌生到熟悉(下)](https://mp.weixin.qq.com/s/_C0E5LfGs83wNTwPqkdvDA) 能觸發需要登錄的網絡請求的操作按鈕,都做成op按鈕,方法都是gu方法,確保已授權登錄才能操作。不過可能出現,當前登錄態有效,但授權過期的情況,這時本來是無需授權的,需要登錄無授權情況下才需要授權。 [http://juanxy.taojingkong.com/pdd/index.html](http://juanxy.taojingkong.com/pdd/index.html)(拼多多優惠券-域名未綁定) [http://m.pin18pin.com/index.html?t=180701&opt\_id=-1&sort\_type=1](http://m.pin18pin.com/index.html?t=180701&opt_id=-1&sort_type=1) http://web.haoquants.com/first?invitationCode=144975 https://migmkt.qq.com/act/csr_spread.html?sdi_from=0&sdi_sc=1 https://mobile.yangkeduo.com/duo_cms_mall.html?pid=1532122_14087879&cpsSign=CM1532122_14087879_3b21b70f855ca06f2c59216dfe6e5ed1&duoduo_type=2&_wv=41729&_wvx=10&refer_share_id=ivk2i6A8lDGCKNsYNc0yqnP4wwX6381k&refer_share_uid=0&refer_share_channel=message 只有一條母消息,其它為消息狀態,這樣的消息為廣播消息。 [https://youhui.pinduoduo.com/goods/goods-detail?goodsId=80642375937&pid=1673256\_44315941&authDuoId=230001&cpsSign=CM1673256\_44315941\_7a486bd28da21964386a7804548683b9&duoduo\_type=2](https://youhui.pinduoduo.com/goods/goods-detail?goodsId=80642375937&pid=1673256_44315941&authDuoId=230001&cpsSign=CM1673256_44315941_7a486bd28da21964386a7804548683b9&duoduo_type=2) > 可以爬信息 [小區里撿到“淘寶天貓充值卡”?這“套路”……](https://m.toutiaocdn.cn/group/6587530685076996616/?iid=33124962994&app=news_article_lite&timestamp=1533819128&group_id=6587530685076996616&wxshare_count=1&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_android&utm_campaign=client_share) ![](http://cdn.aipin100.cn/0b39fbdd5afa1c3334258a5dbf0600f4) 可以提供讓商家報名的功能,還有商家的圈子 ~~~ 【小程序跳轉拼多多小程序教程】 https://developers.weixin.qq.com/miniprogram/dev/api/navigateToMiniProgram.html 1、你們小程序所屬的公眾號需先關聯拼多多小程序 拼多多小程序appId: 'wx32540bd863b27570', 2、關聯的時候不要勾選在資料頁展現!! 不要勾選在資料頁展現!! 3、發起關聯后,按照格式提供以下內容。 公眾號名稱: 注冊公司名稱: 多多客ID: 注冊賬號: 4、關聯好后,pdd.ddk.goods.promotion.url.generate(多多進寶推廣鏈接生成)這個I 接口入參增加字段:generate_we_app ,值為true。響應參數中有page_path,即為需要傳的path。 ---- 設計算法,得到下級收入的百分比作為獎勵收入 實際傭金 傭金 = 實際傭金 * Z 利潤 = 實際傭金 * (1 - Z) 父獎勵 = 傭金 * F 爺獎勵 = 傭金 * Y 所以實際總放出 = 傭金 + 父獎勵 + 爺獎勵 即 傭金 * (1 + F + Y) 要保證系統利潤必須滿足 實際傭金 > 實際總放出 實際傭金 > 實際傭金 * Z * (1 + F + Y) 即 1 > Z * (1 + F + Y) ~~~ ---- ![](http://cdn.aipin100.cn/ccf2e46d0645f3a32d1f0b00c4e18342) 這廣告和快遞單一起的,百世快遞也做這個啊 有人利用在快遞包裹上貼廣告的方式來做這種返利了。 在今日頭條上做廣告的是賣軟件的,以創業賺錢吸引人,其他的大部分以返利省錢為口號吸引普通用戶(也有發展下機賺錢的功能,但是主要宣傳口號還是返利省錢來吸引直接目標客戶,也就是整個鏈中產生交易的一環用戶),還有同樣以賺錢創業為口號吸引發展下線。每個角色都有自己的目的,不同的角色推廣方式不同。 他們有時會發一個小紅包以吸引用戶使用他們的返利功能,然后朋友圈不斷。 我就說,除了普通賬號的微信機器人,肯定還有直接做公眾號的,公眾號有接口能力,但是公眾號不能發朋友圈,推廣方面沒有個人號靈活了,所以兩者可以一起做,可以互補。其實也不需要機器人號,用普通賬號做客服來發朋友圈推廣就可以。 http://adshare.toutiao.com/group/6542747856673964301/?iid=33124962994&app=news_article_lite&timestamp=1527426801&wxshare_count=1&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_android&utm_campaign=client_share [致好券推手全體同胞的一封信](https://mp.weixin.qq.com/s/_R4kKRFMoU5WMXAUzHH8tg) 網易考拉在微信上打開詳情頁,顯示分享賺,這是不好的,分享給別人購買,別人看到原來可以分享賺,你是在利用他賺錢,利用信息不對稱,你現在公開了,所以別人會反感,不如自己自推自買,為什么要好了別人呢。其實這個模式根本上就有問題,人人這樣自推自買有什么意義呢,商家愿意嗎,其實有一定道理的,商品的定價,這代表它的價值,如果直接降價你就會認為它不值高價,但是通過其它渠道讓你獲得優惠了,你就會覺得占便宜了,這個模式的意義就在于此,這就是人性,當然這其中也有信息不對稱的功勞。 ![](http://cdn.aipin100.cn/85ffbb530abdcce8f35bb924f7478ce8) 任務平臺 * * * * * last update:2018-9-11 22:14:10
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看