I have an iOS Runtime SDK application (v 100.7) to which I recently added an offline mode which allows the user to select an area of interest on the map and a replica is created including all the feature services. I followed the pattern described in this article if you want to see implementation details.
The AGSOfflineMapTask is created from a web map portal item I created on my company's on-premise Portal (enterprise 10.7.1). We use a reverse proxy server configured like this diagram. Activating offline mode fails and generates the following error for every service contained in the web map: "A server with the specified hostname could not be found", then gives the url of the internal url rather than the public-facing url outside the firewall.
I made sure that the url for the web map portal item supplied to the AGSOfflineMapTask uses the public-facing url, but it seems that the call to start() function makes requests to the internal urls and I don't have a way to change that, so the requests are being blocked by the firewall.
I'm currently relying on a workaround by temporarily changing the hosting server for portal to the dmz url and republishing all the services contained in the map which works, but this is not a good solution because it violates our security policy. I could use a suggestion for a better way of downloading a portion of the map for offline use.
Solved! Go to Solution.
When taking the webmap offline, the task inspects the layer URLs embedded in the webmap to start preparing their data. Are you embedding internal URls in the webmap? If so, that might be problem.
Can you try using public URLs when adding layers to the webmap and see if that resolves the problem?
When taking the webmap offline, the task inspects the layer URLs embedded in the webmap to start preparing their data. Are you embedding internal URls in the webmap? If so, that might be problem.
Can you try using public URLs when adding layers to the webmap and see if that resolves the problem?
That turned out to be exactly the problem. My feature services were added using the "Search for Layer" and selected from the portal. The services were published using the hosting server which is behind the firewall. Adding them from the web and entering the pubic facing url worked like a charm.
Thanks so much!