微信小程式訂閱

2022-07-22 18:33:17 字數 2913 閱讀 3614

主要運用api:

requestsubscribemessage

getsetting

opensetting

主要功能:

使用者強制訂閱,無論怎麼取消都能訂閱,總**在下方,具體流程思路有耐心可以往下看...,可以拷貝直接用。引入即可,當然我比較菜,大家可以再改改。

/*

* * @desc 小程式訂閱功能

* @param tmplids 訂閱列表

* @returns 返回promise */

//永久關閉訂閱則代表點選了我不在接受此訊息,再次訂閱是無法彈起授權視窗的。普通關閉時可以再次彈起授權視窗。

export const subscribe = (tmplids = ) =>)}//

申請訂閱功能

function

requestsubscribe(tmplids, resolve, reject)

else

},fail: res =>

return

} })}//

計算使用者訂閱訊息的數量

function

checksubscribeall(tmplids, res)

}if (arr.length ==tmplids.length)

else}//

檢查使用者是否授權完畢(檢查時永久關閉還是普通關閉)

function

guidsubscribemessageauthafter(tmplids, resolve, reject) ,

subscriptionssetting: } ={}

} =res;

if (object.keys(itemsettings).length == 0)

else

if(res.cancel)

}});

} else

else}}

});}//

引導使用者重新授權(永久關閉的方法)

function

guideopensubscribemessage(tmplids, resolve, reject)

});}

else

if(res.cancel) );

reject(2);}}

});}//

比較版本號

function

compareversion(v2) =uni.getsysteminfosync();

v1 = v1.split(".");

v2 = v2.split(".");

const len =math.max(v1.length, v2.length);

while (v1.length while (v2.length for (let i = 0; i < len; i++)

else

if (num1 }

return 0;

}

這是第一步,封裝promise,返回訂閱成功和訂閱失敗的**。以及判斷版本號是否低於2.8.3,低於2.8.3是只能使用乙個模板id的,可以考慮做相容。這邊內部原因就跳過不做訂閱。然後走入主流程requestsubscribe(tmplids, resolve, reject),帶入模板id和倆個**

return

new promise((resolve, reject) =>)

這是第二步,訂閱api。api走通就success,報錯走fail。 主要看success,返回乙個res,大家可以列印看看,裡面就乙個物件,鍵是id,訂閱成功的值是accept,執行一波判斷數量函式,符合長度說明使用者全部訂閱,就放行。

當然點選了「總是保持以上選擇,不再詢問」也是走到這裡面,然後值都是訂閱失敗的。這裡走去檢查看看是否點選了「總是保持以上選擇,不再詢問」。

//

申請訂閱功能

function

requestsubscribe(tmplids, resolve, reject)

else

},fail: res =>

return

} })

}

第三步 getsettingapi,檢查使用者是否點選了「總是保持以上選擇,不再詢問」,判斷的條件就是返回的res有沒有

itemsettings,當然大家可以找倆種情況比對一下就知道了,永久關閉的是有的那個物件的,普通關閉是沒有的。

判斷這個目的,是可以直接在調起訂閱介面。可以引導使用者重新點選。當然如果調不起就走

guideopensubscribemessage函式。

//

檢查使用者是否授權完畢(檢查時永久關閉還是普通關閉)

function

guidsubscribemessageauthafter(tmplids, resolve, reject) ,

subscriptionssetting: } ={}

} =res;

if (object.keys(itemsettings).length == 0)

else

if(res.cancel)

}});

} else

else}}

});}

第四步,使用者永久關閉了訂閱,我們可以用opensetting開啟。這時候訂閱訊息是會出來沒訂閱的模板的。重新引導...這樣就結束了這個封裝啦!

//

引導使用者重新授權(永久關閉的方法)

function

guideopensubscribemessage(tmplids, resolve, reject)

});}

else

if(res.cancel) );

reject(2);}}

});}

微信小程式訂閱訊息中文亂碼解決

背景 但是乙個問題來了,就是中文一直是亂碼,哈哈,試了幾種方式都不行。解決 其實就是乙個utf 8的編碼問題,但是這個寫的地方很講究。獲取urlconnection物件對應的輸出流 outputstreamwriter outwriter new outputstreamwriter conn.ge...

(微信小程式)一 初識微信小程式

需要看的 先是檔案目錄 一 pages 他存放於多個頁面 如 index log頁面。可以把他裡面的每個資料夾看成乙個整體。這個整體存放著 html css 和 資料 1 index資料夾 存放的index頁面的目錄。2 index.js 他可以處理得到 ajax 或自定義定義的資料。把得到的值封裝...

微信小程式

2.單獨設定某一頁面下的頂部欄的背景顏色,在其對應的.json檔案下修改即可 3.this.setdata 注意 onload函式下面執行的是非同步操作,非同步操作裡面this.data.直接賦值,是無效的,必須使用this.setdata this.setdata msg he llo wor l...