主要運用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和倆個**
returnnew 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...