Introduction: In Rhomobile, we have the ability to capture signature using the Signature API. The signature API opens a full screen view where user draws its signature and then press the use bytton to store it.
Description: First of all, on the controller, we need to call the take method ofSignatureCapture API to show the pre-defined view to capture the signature.
Rho::SignatureCapture.take(url_for( :action => :signature_callback, :query => { :id => order_id }), { :imageFormat => "jpg", :penColor => 0x000000, :penWidth=> 5, :border => true, :bgColor => 0xF3F0EB } )
And When the user clicks the use button, the callback method is called, and the captured signature image is passed on as parameters,
def signature_callback message = "Signature not recieved" if @params['status'] == 'ok' begin # Move the file to base app path sign_name = @params['signature_uri'].to_s().split("/")[2] sign_path = File.join(Rho::RhoApplication::get_blob_path(@params['signature_uri'])) sign_content = File.binread(sign_path) new_sign_path = File.join(Rho::RhoApplication::get_base_app_path(), sign_name) f = File.new(new_sign_path, "wb") f.write(sign_content) f.close message = "Signature recieved successfully" rescue Exception => e # Error handling end end WebView.navigate( url_for :action => :show, :query=> { :signature_name => sign_name, :message => message } ) end
That’s it. By this simple way we can capture the signature in Rhomobile.