詳見官方文檔:developers.weixin.qq.com/miniprogram…html
用cover-view 和 cover-image前端
<video id="myVideo" src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400" controls="{{false}}" event-model="bubble">
<cover-view class="controls">
<cover-view class="play" bindtap="play">
<cover-image class="img" src="/path/to/icon_play" />
</cover-view>
<cover-view class="pause" bindtap="pause">
<cover-image class="img" src="/path/to/icon_pause" />
</cover-view>
<cover-view class="time">00:00</cover-view>
</cover-view>
</video>複製代碼
官方APIios
live-pusher目前只對部分品類的應用開放web
申請了服務類目以後,在接口權限中選擇對應功能:json
設置完若是還不行,嘗試下重啓開發展工具,從新編譯,重啓真機上的微信。小程序
<live-player id="myVideo" src="rtmp://xxxxxxx" controls="{{false}}" autoplay bindstatechange="statechange" binderror="error">
<cover-view class="controls">
<cover-view class="play" bindtap="play">
<cover-image class="img" src="/path/to/icon_play" />
</cover-view>
<cover-view class="pause" bindtap="pause">
<cover-image class="img" src="/path/to/icon_pause" />
</cover-view>
<cover-view class="time">00:00</cover-view>
</cover-view>
</live-player>複製代碼
wxss中設置:api
position: fixed;
height: 100%;
width: 100%;複製代碼
app.json文件配置導航樣式自定義:數組
{
"pages":[
"pages/index/index",
"pages/logs/logs"
],
"window":{
"navigationStyle": "custom"
}
}複製代碼
目前小程序分包大小有如下限制:瀏覽器
/*bash
undefined 爲window下一個屬性,在某些瀏覽器下好比IE7,能夠被賦值改變
void() 用於計算一個表達式,永遠返回undefined;用來代替undefined亦可減小字符數
*/
const noop = () => void(0);
在webview內跳轉到小程序傳遞支付參數時,注意package字段
var data = [
'timeStamp=' + data.timeStamp,
'nonceStr='+data.nonceStr,
'package='+ encodeURIComponent(data.package),
'signType='+data.signType,
'paySign='+data.sign,
]
wx.miniProgram.navigateTo({
url: '/pRoom/wxpay/wxpay?' + data.join('&')
})複製代碼
package字段官方文檔以下:
package String 是 統一下單接口返回的 prepay_id 參數值,提交格式如:prepay_id=*複製代碼
此時package值爲prepay_id=djasdy2xxxxxx, 帶一個等於號
須要對此值進行編碼,到小程序端再進行解碼,否則傳到小程序端package字段值只有prepay_id=, 後面的id值會丟失
onLoad(data) {
wx.requestPayment({
'timeStamp': data.timeStamp,
'nonceStr': data.nonceStr,
'package': decodeURIComponent(data.package),
'signType': data.signType,
'paySign': data.paySign,
'success':function(res){}
})
}複製代碼
平臺分別提供多種方式實現微信登陸:
1. 調用wx.login接口,靜默獲取openid
適用場景:無需使用用戶頭像、暱稱、Unionid信息
2. 使用 open-data (小程序)或者開放數據域(小遊戲)的方式展現用戶信息(無需用戶受權)
適用場景:須要在前端「展現」用戶頭像、暱稱信息,但不須要獲取Unionid
3.使用button(小程序)或UserInfoButton(小遊戲)組件,用戶點擊後彈窗請求用戶受權
適用場景:須要獲取用戶頭像、暱稱、Unionid等基本信息
開發建議
第一步:獲取openID
當用戶訪問小程序時,先經過wx.login,獲取用戶openID 。這時無需彈框受權,開發者拿到 openID 能夠創建自身的賬號 ID。
第二步: 使用open-data方式或開放數據域方式展現頭像暱稱
如須要在前端展現用戶頭像、暱稱信息, 使用open-data 方式或者開放數據域的方式展現用戶信息
第三步:根據實際使用場景,使用組件,引導用戶登陸
在關鍵操做中,如必須獲取用戶頭像、暱稱、UnionID信息,可根據第一步獲取的openID判斷是新用戶仍是舊用戶:
若是是舊用戶,能夠直接登陸,也可按期使用wx.getUserInfo更新用戶的信息;
若是是新用戶,使用button(小程序)或UserInfoButton(小遊戲)組件,在用戶點擊後彈窗請求獲取用戶基本信息。
開發者若是遇到由於 session_key 不正確而校驗簽名失敗或解密失敗,請關注下面幾個與 session_key 有關的注意事項。
若是使用本身服務器定義的登陸態失效時間,則不須要wx.checkSession
微信jssdk jweixin.js中有 launchMiniProgram 接口,用來調起小程序指定頁面,但目前暫未開放
基礎組件1.9.9起支持,對應安卓和ios的微信客戶端是6.6.1版本
設置屬性 scroll-top: 999999便可
但在ios中有bug,動態設置scroll-top時,cover-view滾動區域會消失不見。目前官方正在修復。developers.weixin.qq.com/community/d…
button標籤內必須有內容,不能爲空標籤,不能內容空的cover-view標籤,不然button都不顯示!
能夠內嵌cover-image標籤,以下:
<!--分享按鈕-->
<cover-view class="share_wrap" hover-class="active">
<!--button內必須有內容,不能爲空標籤,不然不顯示-->
<button open-type="share" class="share_btn">
<cover-image class="share" src="../../static/img/room/share_icon.png"></cover-image>
</button>
</cover-view>複製代碼
.share_btn{
background: rgba(0,0,0,0);
border: none;
}複製代碼
目前:2018-10-24 官方已修復,正在等待微信版本更新developers.weixin.qq.com/community/d…
場景:
小程序A頁面--webview X頁面--小程序B頁面--webviewX頁面
問題:
若是讓從小程序B 頁面跳轉回webview頁面時,保證:
1. webview刷新
2. webview的回退按鈕,點擊一次即跳轉回小程序A頁面,而不是點擊兩次
webview頁面:
onShow(){
let session = qcloud.Session.get()
this.setData({
url: `https://m.xxxx.com/recharge?platform=mp&skey=${session.skey}`
})
}
小程序B頁面:
var pages = getCurrentPages()
var prevPage = pages[pages.length - 2]
// 必須跳轉到一個和以前頁面不同的url,這樣navigateBack後纔會刷新頁面
prevPage.setData({
url: `https://m.xxxx.com/recharge`
})
wx.navigateBack()複製代碼
之因此在webview中用onshow,是由於每次進入webview頁面都會執行,這樣就保證webview先後訪問的是同一個URL,保證點擊左上角返回時,只需點擊一次就返回到最初的小程序A頁面。
若是webview先後的URL不一致,則從小程序B跳轉到webview,點擊左上角會先返回最初的webview,而後再返回小程序A頁面
傳小程序的skey到webview,由webview後臺進行判斷登陸態並主動種植登陸態
這個官方文檔描述不清晰,第一次切換tab時,並不會觸發此接口,再一次點擊自身tab纔會觸發
button::after{
border: none;
}複製代碼
cover-view不支持背景漸變,其餘非原生標籤支持
wx:key的值比較特殊,不須要用Mustache 語法
用惟一的id能夠提升渲染速度,並非全部狀況index都適用
wxs內的語法不是js語法,因此對於生成正則對象,須要用到小程序自帶的函數getRegExp
var regExp = getRegExp("^http:", "i")複製代碼
而次函數在js中是不存在的,js文件中須要從新使用js語法:
var regExp = new RegExp("^http:", "i")複製代碼
不支持let
ios動態改變cover-view的scroll-top值,會致使cover-view滾動區域消失不見
詳見:developers.weixin.qq.com/community/d…
能夠直接修改對象或者數組內的某個字段的值,甚至能夠直接設置還沒有在data中定義的值!
甚至能夠在setData的鍵值內增長變量:
this.setData({
[`imgs[${key}]`]: img
})複製代碼
注意:此時``須要用[]擴起才行
這樣能夠作到數據的部分更新和渲染,無疑是對性能提高有幫助的
因此須要在js中動態計算高度渲染到頁面
懶加載能夠本身寫,但要注意setData的坑
高斯模糊沒辦法,想辦法用非原生組件image代替
代碼片斷: wechatide://minicode/YMbuaqmR7c3Q
代碼實現:
預期效果:
實際效果:
正確實現方式:
參考論壇:developers.weixin.qq.com/community/d…
預期效果:
實際效果:
體驗版支持ws協議,須要打開調試模式
若是websocket是鏈接的域名非IP地址,則不能經過鏈接代理更改電腦的host來指定socket域名的解析地址
若是有測試環境,建議:
1. 建一個專有的測試環境websocket域名
2. 直接使用測試環境的IP地址訪問websocket
轉載:https://cloud.tencent.com/developer/article/1367130