If you send an iMessage to someone with an iPhone and either you or they have no service or data connection, there’s an option to have it fall back as an SMS instead. You can tap and hold the message either during delivery or if it has sent but isn’t displaying delivered to display the option “Send as Text Message”.
But here’s an annoyance I’ve found with iMessage if you rely on it as a text message alternative. Unfortunately, the above simply doesn’t work if you have another device set up with iMessage that’s powered on and connected to the internet… such as an iPad. The additional iPad picks up the messages and marks them as delivered, and since iMessage is told that a message was delivered it just seems to assume that delivery to one device is just the same as delivery to all devices.
To give you an example, my girlfriend wasn’t able to obtain a data connection today so any messages she was sending to me arrived on my iPhone as good old SMS messages. However, every reply I sent was going out as an iMessage, since her iPad was on and able to receive them, which would then show as delivered. It wasn’t until an hour later when my girlfriend called to see if everything was ok since she hadn’t received any messages from me. I soon realised that although the messages were marked as delivered, they had been delivered to her iPad which was sat at home, happily receiving all the messages and sending a delivery response back.
Since iMessage on the iPad was reporting a successful delivery back to me I’d just assumed they’d gone through, not knowing that they were actually just being received by a device she wasn’t even using at the time. I’d only discovered the messages hadn’t gone through to her iPhone when I met with her later in the day and she told me she was having internet issues with it.
There doesn’t really appear to be any kind of workaround for this either, since iMessage assumes any delivery means its work was done. Although you can turn off iMessage and force text messages to be sent, that still requires knowing if you or the other user is going to be experiencing any data outage.