If you're working to build a 3D viewport you probably want a projection matrix. Which means in addition to your normal n you also need to define an "up" vector in the plane. That is, if the plane represents the screen of the iPhone, you need a vector that shows which direction the top of the iPhone is.
Then, your n vector crossesd with your up vector will give you a third vector, orthogonal (at right angles) to the first two. (Also, your n vector should be orthogonal to the up vector, but that should happen automatically if the up vector is already in the plane).
Once you have your three vectors, normalize them, and put them as the columns in a 3x3 matrix. If you want the x and y coordinates to be in the plane, with the z coordinate being the distance from the plane, put the crossed vector you calculated as your first column, the up vector as the 2nd column, and n as the third.
Then you simply multiply your point P by your matrix M to get a new point P' (that is, P * M = . P'. Or if you want to think of the points as column vectors, do M^T P = P'). P'.x,y will be in the plane, and P'.z will be the distance from the plane, which you can drop if you're projecting on to the plane.
Note that this doesn't do anything around scale or translation of the points, or clipping things to the viewport. If you want all of that you probably want a full fledged Model-World-Camera-View-Projection-Clip transformation pipeline, and it gets more involved. It's an old book but the Cg Tutorial had a good section explaining the basic transformation flow.