ServerOpenUrlProxy.lua 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. local RemoteProxy = requireProxy("remote/RemoteProxy")
  2. local ServerOpenUrlProxy = class("ServerOpenUrlProxy", RemoteProxy)
  3. ServerOpenUrlProxy.NAME = global.ProxyTable.ServerOpenUrlProxy
  4. local cjson = require("cjson")
  5. function ServerOpenUrlProxy:ctor()
  6. ServerOpenUrlProxy.super.ctor(self)
  7. end
  8. local function urlencodechar(char)
  9. return "%" .. string.format("%02X", string.byte(char))
  10. end
  11. local function urlencodeT(input)
  12. -- convert line endings
  13. input = string.gsub(tostring(input), "\n", "\r\n")
  14. -- escape all characters but alphanumeric, '.' and '-'
  15. input = string.gsub(input, "([^%w%.%-%_%~ :/=?&#])", urlencodechar)
  16. -- convert spaces to "+" symbols
  17. return string.gsub(input, " ", "+")
  18. end
  19. function ServerOpenUrlProxy:handle_MSG_SC_OPEN_URL(msg)
  20. local header = msg:GetHeader()
  21. local jsonData = ParseRawMsgToJson(msg)
  22. if not jsonData then
  23. return -1
  24. end
  25. dump(jsonData)
  26. local url = jsonData.url
  27. if not url or string.len(url) < 1 then
  28. return
  29. end
  30. if global.isIOS then
  31. url = urlencodeT(url)
  32. end
  33. cc.Application:getInstance():openURL(url)
  34. end
  35. function ServerOpenUrlProxy:onRegister()
  36. ServerOpenUrlProxy.super.onRegister(self)
  37. LuaRegisterMsgHandler(global.MsgType.MSG_SC_OPEN_URL, handler(self, self.handle_MSG_SC_OPEN_URL))
  38. end
  39. return ServerOpenUrlProxy