Можно ли определить наличие приложения на смартфоне при посещении сайта?
Можно, но это больше похоже на хак.

В приложении регистрируете Custom URL Scheme, на сайте проверяете, можно ли открыть этот URL, если нет — приложение не установлено
Нет, только через хаки.