Address validation form API or Database on iOS? - ios

I'm working on an iOS app where users can purchase products and get them delivered home. Before the actual purchase, the user will have to input his delivery address in the United Kingdom.
For example, the user types in the postcode "SW1A 2AB", and a UIPicker shows up listing the possible matches such as "11 Downing St".
I would like to know if there any ressources or services online (free ideally) to do an address lookup based on a UK postcode that the user will provide on the form. Since the app will be launched in the UK only and products can only be delivered here, I don't have to worry about other kinds of address formats.

It sounds like you are after Postcode to Address lookup which within the UK involves using the Royal Mail Postcode Address File (PAF) which comes with a cost, however is the most reliable source for UK address data. It can be bought as a data file directly from Royal Mail however several APIs also exist, meaning you don't need to worry about storing and updating over 29 million addresses.
I work for Allies Computing who provide a cloud hosted REST based API, which uses Royal Mail's daily updates and can be paid for on a per search basis.
Of course other providers exist offering very similar APIs, Royal Mail's Powered by PAF website has a full list of them.
So long as your application will have access to the internet you can make use of these, although it would be a good idea to present users with a full address form if they don't have internet connection.

Related

How does some second phone number apps like Sideline, Hushed work? what's the technical principle?

Some apps like Sideline, Hushed, can be used in USA and Canada as a second phone number, what's the technical principle?
Our app NumberBay, does this for 60+ countries, including USA and Canada. So I know what I'm talking about:
Calls are received on a virtual phone number (called a DID).
DIDs are often purchased from 3rd party companies (like top-quality Voxbone and our supplier). This is because deals must be made with government organisations and/or large telephony companies in every supported country. Also often infrastructure must be configured/rented/bought to support the connections. This is massive amount of work and very specialized.
When someone calls the DID, this call is received by this 3rd party and is forwarded (using SIP) to the NumberBay/Hushed/Sideline server.
(VoIP (Voice over Internet Protocol) is the general terms for telephony using internet. SIP is a possible implementation/example of VoIP.)
This NumberBay/Hushed/Sideline server knows to which user account the called DID belongs and forwards the call to the user's device or phone number.
This forwarding can be done in two ways:
SIP: The company's app will receive the call. Data will travel over Wi-Fi or mobile data. The company's server will 'call' the app. Hushed does this.
Good old telephony: The company's server will forward (this is called 'termination') the call to the telephony network. Very big company may have their own connections into the telephony network, but often they have a contract with a termination party. Sideline does this, but seems to only call your mobile number. NumberBay goes much further allowing you to register all your mobile and fixed-line phone numbers in the app. You can select, per virtual number, which phone number you want NumberBay to forward the calls to.
Let me know if you need more technical details.

Does my app use crypting? Firebase

I use Firebase database, storage etc. in my application. When I uploaded my archive to Itunes Connect, it has asked me a questions about crypting. Do I use crypting in my application and etc.
I know, that Firebase uses https.
So the question is: If I use Firebase, what should I answer on this questions?
As of September 20th, 2016 (Dentons) the answer is almost always No. Unless you are a encrypted message provider like Signal, Telegram, Whatsapp or Snapchat - these export controls are no longer a concern. Nearly every app uses HTTPS these days and it defeats the purpose of the U.S. Export Registry if every app needs to be registered.
The countries that are export restricted are people you don't normally want as customers; Syria, North Korea ect... and are typically restricted from using apps for more fundamental reasons - like not having cellphone towers or even the ability to buy a cellphone. It is common for backend services like Firebase and Google to blacklist export-restricted IP spaces, so they won't be able to connect even if they get the app.

Geolocation and IP address targeting for ads

I'm trying to create a Ad campaign with either or both Google Adwords and Google Analytics. The key point for the campaign is to target a specific geographic location and a specific range of class 4 IP addresses and no one else.
I would like the ability to rotate between ads once a specific IP address has already seen an ad in the Ad group.
I've seen something like this done by a company called We-Care-Software and when you click on the image in the email they send it takes you to a landing page for a Time Warner Cable or Verizon Wireless promotion.
I'd like to do something similar to that but targeting IP address ranges. I want to know if this is possible with Google Adsense, DoubleClick for Publishers or Adwords even because with the research I've been doing I haven't come across anything so specific with their services, only geographic targeting, but I need to go deeper than that. Maybe there is an alternative web app that does this?
Any help appreciated.
Thanks in advance.
You wont be able to do this directly with any Google products as far as I am aware. This is due to privacy as IP address targeting (even ranges) could be considered as personally identifiable information. There is IP exclusion, but you can only exclude up to 500 entries, and although wildcards are supported, they are only for the last byte of the address.
If you have a website (e.g. are you a publisher?) that the users are likely to see, you can do the bucketing on your own server (e.g. "BucketA" for users in range 255.255.x.x, "BucketB" for users in range 255.254.x.x etc etc), and the dynamically fire off an adwords remarketing tag with the appropriate bucket ID. You can then target the ad groups to the different buckets in AdWords without Google having to target the IP ranges (as it is targeting the buckets you told it about instead). This approach obviously wont work with users who have not been to your site yet though.

Best way to associate phone numbers with names

My application stores lots of its users friends' phone numbers. I'd like to allow users to associate names with these phone numbers, but I don't want to make users manually type in names (obviously).
I'm curious what the best overall approach is here, as well as the best way to implement it
Overall approach-wise, I imagine using Gmail / Yahoo / Windows Live contacts is best (the Facebook API doesn't let you access phone numbers), though the gems I've found for interacting with these contacts APIs (this and this) only give you access to the names and email addresses of each contact.
Most people don't have phone numbers in Gmail's contacts.
You can allow to import phone book via vCard or do smth to impot from iPhone/Android
Alternatively, you can write a custom parser for google's phone book or use gData API (not sure if it supports it)

3G/Edge/GPRS IP addresses and geocoding

We're looking to develop a mobile website. On this mobile website, we'd like to automatically populate a user's location (with proper fallback) based on their IP address. I'm aware of geocoding a location based on IP address (mapping to latitude, longitude and then getting the location with that information).
However, I'm curious how accurate this information is? Are mobile devices assigned IPs when they utilize 3G, EDGE, and GPRS connections? I think so. If that is so, does it map to a relatively accurate location? It doesn't have to be spot on, but relatively accurate would be nice.
Short answer: No.
The network assigns an IP address to the phone when the PDP context is activated (activation of PDP context is telecomms-speak for 'asking for packet data services'). It can be changed under network control, but this usually only happens when the connection has been dormant for some time.
You need to bear in mind that a typical mobile network may have several million users, and since signaling (i.e. address reconfiguration and the like) doesn't generate revenue, but costs the network scarce radio resources, it gets avoided as far as possible.
There is a further issue. Due to the architecture of mobile networks, if you have a visitor to a country who is operating using the roaming service with their home operator, they will in fact 'appear' to be in their home country. This is because the mobile device always connects to the internet through a node called the GGSN in their home network.
This is a major issue for websites which must deal with rightsholders. As an example, the BBC iPlayer service allows people located in the UK to 'catch up' on any BBC TV or radio content free of charge. In many cases, TV rights are geographically licensed, so the BBC is required to make every effort to ensure that the service is only available to users located in the UK.
This is, as I have explained above, impossible for mobile users. If I am using the SIM card of a UK network, I will 'appear' by geolocation to be in the UK regardless of where I actually am in the world.
This is not so much of a problem as yet: streaming a TV program over a 3G connection when roaming in a foreign network is prohibitively expensive (could easily be $100 or upwards for a single program), so this theoretical problem doesn't arise very often as yet. However, as roaming data costs fall (and everyone knows they will), it will become a real issue.
New smart phones (like Apple's iPhone) generally have web browsers that support HTML5 and/or some other form of client-side geolocation.
HTML5, for example, has the ability to geolocate the computer or mobile device based on a) position of the device's GPS, b) Wifi Triangulation and then c) IP address.
This is a client-side approach, and the browser will ask the user if they wish to share their location with you (which may or may not be a deal-breaker for you), but it is capable of providing < 20m accuracy.
See: About Geolocation in HTML 5

Resources