If you cant run a full node you can use blockchain.info api to do it.
Instead of calling your own block explorer make the client call blockchain.info directly.
This will prevent you getting blocked since the client is calling blockchain, not your domain.
This wont help me, i want to send a push from the server, meaning the server get all the processing
Make the ios app call the domain lets say each minute with the public address and current ios (stored) balance.
With php call abe/insight api to gather that address balance, if its different than the stored balance it means a new tx happened.
If above is true grab the transactions and return the latest transaction and balance back to the client.
Store this info on ios.
First the app is not required to be running all the time
second from what I found on a very fast search insight is an API the same way blockchain.info is, meaning I could get API restrictions
To do it with a server you could install a full node and use the option
-walletnotify=<cmd> or -blocknotify=<cmd>
From what I can tell this is the optimal way, you get all tx and check if they have a known address.
Will check on that and post results later