I typically get stuck around this point. I begin with penciling in which numbers pinky have two options per 3x3. If that dries up, I will try looking for numbers that can only go in one spot per row/column and squares that only allow 1 number.
I usually mark up every possibility for every square, scan for the most obvious ones that can't go anywhere else. Then start scanning lines for numbers that can't go anywhere else. After that you have to start looking for the hidden pairs and such slightly more advanced techniques. A short sudoku guide will explain these techniques better than I can, and your app might be able to do it as well. Basically you try to find pairs of numbers that can only exist in two spots inside a square or a row, eliminating other numbers from those spots and releasing them for other spots. But the best way forward is to first mark up every square and go from there.