本次項(xiàng)目中需要跟其他項(xiàng)目組交流,將他們編譯好的一個(gè)H5的小游戲放在客戶端本地曼尊,記錄一下踩坑的過程酬诀。
1 加載本地URL帶#參數(shù)
第一步將H5的文件加入到工程目錄中,選擇 “Create folder references”
var path = Bundle.main.path(forResource: "football-game/index", ofType: "html") ?? ""
path = path + "?music=true" + "#/footballgame/startgame"
path = "file://" + path
let url = URL(string: path)!
這里有個(gè)問題需要記錄 沒有使用 fileURLWithPath 這個(gè)方法去產(chǎn)出URL骆撇,是因?yàn)樗麜?“#”給轉(zhuǎn)碼瞒御,然后請求的時(shí)候 URL就找不到路徑了。
2 H5的界面在劉海屏的界面不適配.
這里最后跟H5的同事交流后神郊,在本地添加
web.scrollView.contentInsetAdjustmentBehavior = .never
解決問題
3 H5的小游戲中有多個(gè)需要播放的音頻肴裙,并且需要在音頻播放后繼續(xù)下一個(gè)動(dòng)作的需求.這里H5的同事表示因?yàn)闉g覽器的限制趾唱,直接播放的音頻需要本地有交互才可以播放,所以我們轉(zhuǎn)變了一下思路蜻懦,由我們native端提供播放器甜癞,他們在需要的時(shí)候調(diào)用我們的方法
H5這邊需要播放多段音頻,并且H5這邊打包好的文件方法名是混淆過的宛乃,所以這里我們客戶端需要提供給H5一個(gè)音頻播放的方法,然后在音頻執(zhí)行結(jié)束的時(shí)候執(zhí)行他們對應(yīng)的方法悠咱。
guard let body = message.body as? [String: Any], let src = body["src"] as? String, let callback = body["callback"] as? String else {
return
}
Print("收到: " + src)
Print("收到: " + callback)
var filePath = Bundle.main.path(forResource: "football-game", ofType: "") ?? ""
filePath = filePath + "/" + src
let audioUrl = NSURL(fileURLWithPath: filePath)
BackgroundAudioHelper.shared.playSound(audioUrl: audioUrl, isAlert: false) {
let javaScript = "window[\"\(callback)\"]();"
Print("正在執(zhí)行方法\(javaScript)")
self.webView.evaluateJavaScript(javaScript) { (message, error) in
if let error = error {
Print(error.localizedDescription)
}
}
}