Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
184
rated 0 times [  190] [ 6]  / answers: 1 / hits: 41410  / 9 Years ago, wed, march 25, 2015, 12:00:00

In WKWebView we can call ObjectiveC/swift code using webkit message handlers
eg: webkit.messageHandlers.<handler>.pushMessage(message)



It works well for simple javascript functions without parameters. But;




  1. Is it possible to call native code with JS callback function as parameters?

  2. Is it possible to return a value to JS function from native code?


More From » ios

 Answers
43

Unfortunately I couldn't find a native solution.



But the following workaround solved my problem



Use javascript promises & you can call the resolve function from your iOS code.



UPDATE



This is how you can use promise



In JS



   this.id = 1;
this.handlers = {};

window.onMessageReceive = (handle, error, data) => {
if (error){
this.handlers[handle].resolve(data);
}else{
this.handlers[handle].reject(data);
}
delete this.handlers[handle];
};
}

sendMessage(data) {
return new Promise((resolve, reject) => {
const handle = 'm'+ this.id++;
this.handlers[handle] = { resolve, reject};
window.webkit.messageHandlers.<yourHandler>.postMessage({data: data, id: handle});
});
}


in iOS



Call the window.onMessageReceive function with appropriate handler id


[#67322] Sunday, March 22, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
danar

Total Points: 271
Total Questions: 94
Total Answers: 93

Location: Ecuador
Member since Thu, Jun 4, 2020
4 Years ago
danar questions
;