openreplay/mobs/ios_messages.rb
Alexander d22e4e138e
Backend for mobile tracker support (#1456)
* feat(backend): handlers for mobile messages

* feat(backend): new service template

* feat(backend): save mobile session start and send batches to kafka

* feat(backend): added mobile support to sink, ender and storage

* helm(videostorage): added helm chart for a new service videostorage

* fix(backend): added pointer to streing for userBrowser (because it's null for mobile sessions)

* feat(backend): added MsgIOSBatchMeta handler to message iterator's logic

* feat(backend): added ios ts parser to ender

* feat(backend): enabled producing batch of messages to queue

* feat(backend): removed iosstart from mob files

* feat(backend): added new ios message types

* feat(backend): added iosStart and iosEnd

* fix(backend): fixed log issue

* feat(backend): send tar.gz archives to special queue topic

* feat(backend): read raw archives from kafka

* fix(backend): added missing file

* fix(backend): removed the second file reading

* fix(backend): fixed wrong queue topic name

* fix(backend): fixed mobile trigger topic name

* feat(backend): added tar.gz extractor and iOSSessionEnd handler

* feat(backend): debug logs on message uploading

* fix(backend): added raw-images topic consumption

* feat(backend): now sink send iosSessionEnd to video-storage

* feat(backend): added dir creator for new sessions

* feat(backend): added correct command to execute

* feat(backend): added overwrite option

* feat(backend): added s3 uploader for video session replays

* feat(backend): new consumer group for mobile sessions

* feat(backend): debug logs for uploader

* feat(backend): removed unused log

* feat(backend): fixed s3 key for video replays

* feat(backend): removed debug code

* feat(backend): fixed video-storage message filter

* fix(backend): added mobileSessionEnd to SessionEnd converter

* feat(backend): added first version if db support for mobile events

* fix(backend): added swipe events to mob file

* feat(backend): added swipe event to pg

* feat(backend): split logic into 2 services: image-storage and video-storage

* feat(backend): added helm chart for image-storage service

* fix(backend): fixed table name for mobile taps

* feat(backend): added metadata handler for mobile message parser + fix message filters

* feat(backend): added iosRawTopic to DB message consumer

* fix(backend): removed value from mobile inputs

* feat(backend): removed debug log from iterator

* feat(backend): added new apple devices to iOS device parser

* fix(backend): added real projectID instead of 0

* feat(backend): extended a list of simulators for device detector

* feat(backend): updated networkCall mobile message

* fix(backend): added new way to define is network call successed or not

* feat(backend): added timezone support for mobile start request

* feat(backend): added 2 mobile events Input and Click to mob file

* feat(backend): refactored image storage

* feat(backend): video storage with 2 workers

* feat(backend): added project's platform support

* feat(backend): added memory size field for mobile start request

* feat(backend): changed video preset for ultrafast

* feat(backend): added debug log to http /late handler

* feat(backend): added debug log to db service for iosCrash messages

* feat(backend): added tapRage event handler to heuristics

* feat(backend): changed table and field names for ios crashes

* feat(backend): added payload for tapRage events

* feat(backend): added TapRage events insert to DB

* feat(backend): added fps value to /mobile/start response

* feat(backend): added image quality parameter to /mobile/start response

* feat(backend): added ScreenLeave handler

* feat(backend): removed screenEnter and screenLeave events, added new viewComponent event

---------

Co-authored-by: rjshrjndrn <rjshrjndrn@gmail.com>
2023-10-09 15:02:20 +02:00

169 lines
3.5 KiB
Ruby

message 90, 'IOSSessionStart', :replayer => false do
uint 'Timestamp'
uint 'ProjectID'
string 'TrackerVersion'
string 'RevID'
string 'UserUUID'
string 'UserOS'
string 'UserOSVersion'
string 'UserDevice'
string 'UserDeviceType'
string 'UserCountry'
end
message 91, 'IOSSessionEnd' do
uint 'Timestamp'
end
message 92, 'IOSMetadata' do
uint 'Timestamp'
uint 'Length'
string 'Key'
string 'Value'
end
message 93, 'IOSCustomEvent', :replayer => true do
uint 'Timestamp'
uint 'Length'
string 'Name'
string 'Payload'
end
message 94, 'IOSUserID' do
uint 'Timestamp'
uint 'Length'
string 'Value'
end
message 95, 'IOSUserAnonymousID' do
uint 'Timestamp'
uint 'Length'
string 'Value'
end
message 96, 'IOSScreenChanges', :replayer => true do
uint 'Timestamp'
uint 'Length'
uint 'X'
uint 'Y'
uint 'Width'
uint 'Height'
end
message 97, 'IOSCrash' do
uint 'Timestamp'
uint 'Length'
string 'Name'
string 'Reason'
string 'Stacktrace'
end
message 98, 'IOSViewComponentEvent' do
uint 'Timestamp'
uint 'Length'
string 'ScreenName'
string 'ViewName'
boolean 'Visible'
end
message 100, 'IOSClickEvent', :replayer => true do
uint 'Timestamp'
uint 'Length'
string 'Label'
uint 'X'
uint 'Y'
end
message 101, 'IOSInputEvent', :replayer => true do
uint 'Timestamp'
uint 'Length'
string 'Value'
boolean 'ValueMasked'
string 'Label'
end
=begin
Name/Value may be :
"physicalMemory": Total memory in bytes
"processorCount": Total processors in device
?"activeProcessorCount": Number of currently used processors
"systemUptime": Elapsed time (in seconds) since last boot
?"isLowPowerModeEnabled": Possible values (1 or 0)
2/3!"thermalState": Possible values (0:nominal 1:fair 2:serious 3:critical)
!"batteryLevel": Possible values (0 .. 100)
"batteryState": Possible values (0:unknown 1:unplugged 2:charging 3:full)
"orientation": Possible values (0unknown 1:portrait 2:portraitUpsideDown 3:landscapeLeft 4:landscapeRight 5:faceUp 6:faceDown)
"mainThreadCPU": Possible values (0 .. 100)
"memoryUsage": Used memory in bytes
=end
message 102, 'IOSPerformanceEvent', :replayer => true do
uint 'Timestamp'
uint 'Length'
string 'Name'
uint 'Value'
end
message 103, 'IOSLog', :replayer => true do
uint 'Timestamp'
uint 'Length'
string 'Severity' # Possible values ("info", "error")
string 'Content'
end
message 104, 'IOSInternalError' do
uint 'Timestamp'
uint 'Length'
string 'Content'
end
message 105, 'IOSNetworkCall', :replayer => true do
uint 'Timestamp'
uint 'Length'
string 'Type'
string 'Method'
string 'URL'
string 'Request'
string 'Response'
uint 'Status'
uint 'Duration'
end
message 106, 'IOSSwipeEvent', :replayer => true do
uint 'Timestamp'
uint 'Length'
string 'Label'
uint 'X'
uint 'Y'
string 'Direction'
end
message 107, 'IOSBatchMeta', :replayer => false do
uint 'Timestamp'
uint 'Length'
uint 'FirstIndex'
end
message 110, 'IOSPerformanceAggregated', :swift => false do
uint 'TimestampStart'
uint 'TimestampEnd'
uint 'MinFPS'
uint 'AvgFPS'
uint 'MaxFPS'
uint 'MinCPU'
uint 'AvgCPU'
uint 'MaxCPU'
uint 'MinMemory'
uint 'AvgMemory'
uint 'MaxMemory'
uint 'MinBattery'
uint 'AvgBattery'
uint 'MaxBattery'
end
message 111, 'IOSIssueEvent' do
uint 'Timestamp'
string 'Type'
string 'ContextString'
string 'Context'
string 'Payload'
end