Como dito anteriormente, não há 100% de segurança possível. Mas existem várias soluções que juntas dão uma grande segurança.
Https
Como você aponta, esta é uma parte importante, pois evita sniffing.
Sessões
Use sessões e não permita nenhuma solicitação sem uma sessão válida (exceto a primeira, que deve autenticar o aplicativo).
Impressão digital
Verifique o agente do usuário e defina cabeçalhos http extras para obter uma impressão digital exclusiva para seu aplicativo. (Ainda assim alguém poderia cheirar, mas ele precisava usar curl ou similar.)
Solicitações de ofuscação
Crie sua string de consulta e aplique uma função de hash. O servidor precisa implementar a função inversa. ?43adbf764Fz em vez de ?a=1&b=2
Criptografar
Isso vai um passo além. Use um segredo compartilhado para calcular um hash. No servidor repita o mesmo. Isso já é uma segurança forte. Para quebrar, é preciso fazer engenharia reversa do seu aplicativo.
Usar segredo compartilhado exclusivo
Você diz que é um aplicativo para iOS. Após a instalação, um token exclusivo é gerado pelo iOS. Faça com que seu aplicativo registre esse token com seu servidor. Assim, você tem um forte segredo compartilhado exclusivo para cada instalação e não haveria como hackear seu aplicativo da web.