The shape file added to the web map is being treated as feature collection (ultimately, it is a feature layer but in this case all features resided in the web map and not in the server like a feature layer from a feature server).
1. Any way for web map to treat my shapefile as a Feature Layer?
No, you can configure popupInfo for the layer based on a shape file (feature collection). You are not able to find the popup info because you are looking at a wrong place. Just change your code like below and you'll see what you want to
2. Is it necessary for web map to be based on a Feature Layer from a Feature Server for AGSPopupInfo and AGSPopupFieldInfo to be configured properly?
for (AGSWebMapLayerInfo *li in webMap.operationalLayers)
NSLog(@"title %@; layerId %@; layerType %@; mode %d; layers count %d", li.title, li.layerId, li.layerType, li.mode, [li.layers count]);
AGSWebMapFeatureCollection *wmfc = li.featureCollection;
for (AGSWebMapLayerInfo *fcli in wmfc.layers)
AGSPopupInfo *pi = fcli.popupInfo;
NSLog(@"title %@; description %@; allowEdit %@", pi.title, pi.description, pi.allowEdit);
for (AGSPopupFieldInfo *fi in pi.fieldInfos)
NSLog(@"fieldName %@", fi.fieldName);