There are some people doing a project related to mobile cash with Corda – perhaps they’ll introduce themselves on the list. I think they are using the RPC client approach.
There’s an incremental path here that looks a bit like this:
Node-to-phone messaging can be done in several ways.
The ’best’ way in the absence of carrier policies would be to exploit Corda’s tolerance to node outages. If your mobile network supports IPv6 and lets you open ports, you can simply have a background task on the phone that checks your assigned IPv6 address every so often and pushes a new entry to the network map when it changes. If your address changes as you roam, nodes elsewhere on the network will fail to connect and messages will start to buffer up on their disks, with backoff-and-retry. This is how all Corda nodes work already, it’s nothing new. If your address is stable enough and direct connectivity is possible, this is an efficient and simple way to do things. For instance if your device spends most of its time on wifi to consumer internet connections (like at home) you’re good.
But of course most networks are broken / NATd / firewalled and won’t let devices take part in p2p networks. That might change one day – with IPv6 it’s no longer a strong technical impediment but rather, ‘just’ a matter of security policies. It doesn’t really benefit any of the big players to be routing so much traffic through Google and Apple datacenters, not even Google or Apple – it’s a pure cost center for them. Direct routing when possible as an optimisation is in everyone’s interests, so it may happen eventually.
Still, today you need an alternative.
The most effective way would be to implement end to end encryption in the wire protocol, and allow identity keys to sign “proxy permissions” that grant third parties the right to announce themselves as the owners of your identity in the network map. A simple implementation would receive messages and forward them onto the Google/Apple store-and-forward networks (GCM). Nodes would open outbound connections directly. A mobile node could then generate keys, register its phone number as its identity WhatsApp style, and proceed to start receiving and sending messages. The OS wakes up the node when a message arrives on a flow and is waiting to be processed.