Hey @Kate_Leo
Here are the two best ways:
1. If you use a Data Layer in mobile app, then pass a variable with mobile app flag. Collect this flag and set the value in an eVar or pagename. Using these variables, you may setup a marketing channel processing rule
2. User Agent (detailed reference link)Track user agent in an eVar and use it for marketing channel processing rules
You are right, campaign codes are not reliable/accurate/scalable solutions everytime for marketing channel processing rules.
Hope this helps!
Best,
Kishore