We also have a product using the connected app.
Do not ship connected app with managed package as you can create a one connected to authenticate multiple users. Let your app use common connected app credentials thought all app installation.
When user authorise using connected app, access token and refresh token are received after the successful auth flow.
Access token are organisation's session dependent, if any salesforce user has set the session logout time to 2 hours then you access token will expire in two hours.
To prevent logout keep track of expire time which is received with access token and refresh token. Develop a mechanism in app which could track token expiration time for logged in user. If token has crossed the expire time, request for new access token using refresh token. As it is a ios app so run a NSThread
to check for token expiration periodically.