A tiny wrapper for libmaxminddb which allows you to lookup Geo data by IP address.
NOTE From v0.5.0
, MMDB-Swift no longer bundles GeoLite2 database due to the license change. Developers should download the binary version from the Maxmind website.
MMDB-Swift is available through CocoaPods. To install it, simply add the following line to your Podfile:
platform :ios, '8.0'
use_frameworks!
pod "MMDB-Swift"
Then, run the following command:
pod install
To integrate MMDB-Swift into your Xcode project using Carthage, add the following line to your Cartfile
:
github "lexrus/MMDB-Swift"
Run carthage update
to build the frameworks and drag the built MMDB.framework
into your Xcode project.
Package.swift
import PackageDescription
let package = Package(
name: "YOUR_AWESOME_PROJECT",
targets: [],
dependencies: [
.Package(
url: "https://github.com/lexrus/MMDB-Swift",
versions: "0.0.1" ..< Version.max
)
]
)
guard let db = MMDB("PATH_TO_THE_DATABASE") else {
print("Failed to open DB.")
return
}
if let country = db.lookup("8.8.4.4") {
print(country)
}
This outputs:
{
"continent": {
"code": "NA",
"names": {
"ja": "北アメリカ",
"en": "North America",
"ru": "Северная Америка",
"es": "Norteamérica",
"de": "Nordamerika",
"zh-CN": "北美洲",
"fr": "Amérique du Nord",
"pt-BR": "América do Norte"
}
},
"isoCode": "US",
"names": {
"ja": "アメリカ合衆国",
"en": "United States",
"ru": "США",
"es": "Estados Unidos",
"de": "USA",
"zh-CN": "美国",
"fr": "États-Unis",
"pt-BR": "Estados Unidos"
}
}
Notice that country is a struct defined as:
public struct MMDBContinent {
var code: String?
var names: [String: String]?
}
public struct MMDBCountry: CustomStringConvertible {
var continent = MMDBContinent()
var isoCode = ""
var names = [String: String]()
...
}
MMDB-Swift is available under the Apache License Version 2.0. See the LICENSE file for more info.
The GeoLite2 databases are distributed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.