Hi,
I am not sure if you are talking about In-App messages to native apps or In-App messages in a browser on a website.
For Native Apps:
We constantly have to think about this problem because with have a website and 2 native apps that are both iOS and Android.
Most of our campaigns are triggered by events and within our apps, we add all the necessary information as event properties (operating system name, application name, application version).
When In-App messages are triggered by our events, we know for sure that, at that exact moment, the user is using which app and on what operating system.
--------------------------------------------
As an alternative, if these are native apps, they are different apps since they are on different operating system. Then you can configure 2 apps in Braze. Your trigger can be when session starts on a specific Braze app.
--------------------------------------------
If you're talking about recognizing a browser running on Android vs iOS, that's generally a little tricky, but you can somewhat guess using the browser's user agent. So again, if you trigger your campaign using an event, you could add the user agent string in the event properties and do your best in the campaign trigger to filter using Regular Expressions. It would be better to use a library that parses the user agent string and send a more accurate event property.
Pascal.