0
我需要獲取CloudKit中CkAsset的Web網址。但是,迅速,Apple不允許我們取得直接的WebURL,它只下載資產並給我們fileURL。但是,使用JavaScript是可能的。因此,我寫了一個JS文件,用於獲取CkAsset WebURL。當我在瀏覽器中運行這個JavaScript文件。我試圖用下面的代碼快速運行它,但我不能。當我搜索有一個名爲「stringByEvaluatingJavaScriptFromString」的函數,但我無法弄清楚如何運行它。運行JS代碼以快速獲取數據
的index.html
<meta charset="utf-8">
<title>TIL - Today I Learned</title>
<script src="https://cdn.apple-cloudkit.com/ck/1/cloudkit.js" async></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
<script type="text/javascript" src="TIL.js"></script>
JavaScript文件:
window.addEventListener('cloudkitloaded', function() {
console.log("listening for cloudkitloaded");
CloudKit.configure({
containers: [{
// To use your own container, replace containerIdentifier and apiToken
containerIdentifier: 'iCloud.com.emreonder.ogun-dalka-music',
apiToken: '42ba168168dbf3a8c9562904ebf311864258f8dd3638a241d2372057ea0e8a55',
environment: 'development'
}]
});
console.log("cloudkitloaded");
var self = this;
console.log("get default container");
var container = CloudKit.getDefaultContainer();
console.log("set publicDB");
var publicDB = container.publicCloudDatabase;
self.items = ko.observableArray();
// Fetch public records
// self.fetchRecords = function() {
console.log("fetching records from " + publicDB);
var query = { recordType: 'Musics'};
// Execute the query.
return publicDB.performQuery(query).then(function(response) {
if(response.hasErrors) {
console.error(response.errors[0]);
return;
}
var records = response.records;
var numberOfRecords = records.length;
if (numberOfRecords === 0) {
console.error('No matching items');
return;
}
console.log(records.length + " records")
console.log(records);
self.items(records);
});
// };
});
斯威夫特文件:
let url = Bundle.main.url(forResource: "index", withExtension: "html")
let myRequest = NSURLRequest(url: url!);
webView.loadRequest(myRequest as URLRequest);
print(webView.pageCount)
let test_string = webView.stringByEvaluatingJavaScript(from: "function();")
print(test_string)
編輯:我把HTML文件還,但現在我不知道該怎麼調用JavaScript函數。
評估js的方法是WK/UIWebView中的公共方法,你需要先加載到webview他們運行你的js – Injectios
它說「沒有初始化器」。我需要實現委託或什麼? –