When two teams are working separately on the same project it is easy for misunderstandings to occur. It's important to create a schedule for for meeting and discussing progress on the app. Setting up a communication cycle between your team and the development shop will help avoid problems in the future.
Whether you are outsourcing a single feature or the entire app, there needs to be time to review builds and provide feedback. Commonly, development shops reconnect only after they complete the beta app. If you plan on being more involved, do so from the start. When working out contract details be sure that you are allowed to provide feedback, ask for bug fixes, and changes as part of the deal.
The more material you can bring the development shop in terms of wireframes, story lines, specific features etc. the better they will understand what you want. As with any team it is important to express expectations or you may be disappointed by what is produced if you aren't clear on what those expectations are.
To avoid confrontation make sure to explain why things did not meet your expectations. Explain how and why it doesn't work, and if you have data, such as usability testing, make sure to show that as well. Being up front and honest is the best way to manage your own expectations as well as portray your expectations to the development shop.