Robust GNSS Shadow Matching for Smartphones in Urban Canyons