[英]PowerBI Tile issue IOS
我正在使用PowerBI REST制作iOS应用。 下图显示了结果。 当我单击任何一个图块时,我没有任何反应,而如果我单击“ 打开 ”红色边框(在Photoshop中添加),则仅当该图块包含地图时,该单击才会响应,其他图块仍然没有响应。
在Mac上的浏览器中运行相同的页面,一切正常,但在iOS设备上却没有。
HTML代码:
<html>
<head>
<meta name="viewport" content="initial-scale=1.0" />
<script type="text/javascript">
// listen for message to receive tile click messages.
if (window.addEventListener) {
window.addEventListener("message", receiveMessage, false);
} else {
window.attachEvent("onmessage", receiveMessage);
}
//The embedded tile posts messages for clicks to parent window. Listen and handle as appropriate
function receiveMessage(event) {
messageData = JSON.parse(event.data);
if (messageData.event == "tileClicked"){
window.webkit.messageHandlers.callbackHandler.postMessage(messageData.navigationUrl.toString());
}
}
function updateEmbedReport() {
var w = window.innerWidth - 25;
var h = window.innerHeight;
// check if the embed url was selected
var embedUrl = "";
var iframe = document.getElementById('iframe1');
iframe.src = embedUrl;
iframe.onload = postActionLoadReport;
iframe.height = h;
iframe.width = w;
}
function postActionLoadReport() {
// get the access token.
accessToken = ;
var w = window.innerWidth - 25;
var h = window.innerHeight;
// construct the post message structure
var m = { action: "loadTile", accessToken: accessToken, height: h, width: w};
message = JSON.stringify(m);
// push the message.
iframe = document.getElementById('iframe1');
iframe.contentWindow.postMessage(message, "*");
iframe.height = h;
iframe.width = w;
}
</script>
</head>
<body onload="updateEmbedReport()">
<iframe id="iframe1" width="250px" frameBorder="0" name="iframe1" height="250px" style="cursor:pointer"/>
</body>
</html>
Swift代码(用于使应用程序响应平铺单击)
private var mWebView: WKWebView?
override func awakeFromNib() {
super.awakeFromNib()
let mWebViewConfig: WKWebViewConfiguration = WKWebViewConfiguration()
mWebViewConfig.userContentController.addScriptMessageHandler(self, name: "callbackHandler")
mWebViewConfig.preferences.javaScriptEnabled = true
mWebViewConfig.preferences.javaScriptCanOpenWindowsAutomatically = true
self.mWebView = WKWebView(frame: self.frame, configuration: mWebViewConfig)
//self.mWebView!.scrollView.scrollEnabled = false
self.addSubview(self.mWebView!)
}
func setData(url: String, tileClick: ITileClick){
self.mTileClick = tileClick
let page: String = (InstanceReferences.mPowerBIHandler?.GetPage(InstanceReferences.mAuthenticationToken!, EmbedURL: url, ReportPage: false))!
self.mWebView?.loadHTMLString(page, baseURL: NSURL(string: url)!)
}
func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage) {
print("iniside")
if message.name == "callbackHandler" {
self.mTileClick?.OnTilePageClick("\(message.body)")
} }
注意:在android应用中使用了相同的HTML页面,并且一切正常。
任何帮助都会很棒。
您是否可以使用iphone上的Power BI App使用任何向下钻取选项?
嵌入式页面中似乎存在一个错误,该错误阻止了它检测到iOS的点击。 我相信由于跨域限制,您将无法最终解决此问题。
您可以通过以下方法解决此问题:保存tileLoaded事件提供给您的导航URL(在瓦片加载时触发),并检测iOS中的轻击(在WKWebView上使用手势识别器)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.