Depois de algumas horas tentando fazer com que o dylib do Leap Motion compilasse em um aplicativo RubyMotion, desisti e segui a rota WebSocket, inspirado por leapmotion-ruby e RubyMotion か ら WebSocket を 使 う. Veja como eu fiz.
Primeiro, eu adicionei gem 'motion-cocoapods'
ao meu Gemfile e corri bundle install
. Então eu adicionei isso ao meu Rakefile:
Motion::Project::App.setup do |app|
app.name = '...'
app.pods do
pod 'SocketRocket'
pod 'JSONKit'
end
end
Após a execução, rake pod:install
você deve estar pronto para iniciar as dependências. Agora, no applicationDidFinishLaunching:
método do seu AppDelegate, adicione isto para configurar o WebSocket:
url = NSURL.URLWithString('ws://127.0.0.1:6437')
@socket = SRWebSocket.alloc.initWithURLRequest(NSURLRequest.requestWithURL(url))
@socket.delegate = self
@socket.open
Agora adicione os seguintes métodos delegados SocketRocket à sua classe AppDelegate e você estará pronto para ir:
def webSocketDidOpen(webSocket)
data = '{"enableGestures":true}'
@socket.send(data)
end
def webSocket(webSocket, didReceiveMessage:message)
error_ptr = Pointer.new(:object)
parsed = message.description.objectFromJSONStringWithParseOptions(JKParseOptionValidFlags, error:error_ptr)
if parsed.nil?
error = error_ptr[0]
puts error.userInfo[NSLocalizedDescriptionKey]
else
p parsed
end
end
def webSocket(webSocket, didFailWithError:error)
p "Error : #{error.description}"
end
def webSocket(webSocket, didCloseWithCode:code,reason:reason)
p "Close"
end
O primeiro método envia uma mensagem ao controlador para iniciar o rastreamento de gestos. Se não precisar deles, você pode remover essas linhas.