相关疑难解决方法(0)

如何在iOS应用程序中获取Cellular IP地址

我喜欢在我的应用程序中显示IP地址,我已经知道如何显示WiFi IP地址但是当我在移动电话时它会显示错误,那么是否有一种方法可以在iPhone上显示移动IP地址?

这是我用于WiFi IP地址的代码:

NSString *address = @"error";
    struct ifaddrs *interfaces = NULL;
    struct ifaddrs *temp_addr = NULL;
    int success = 0;

    // retrieve the current interfaces - returns 0 on success
    success = getifaddrs(&interfaces);
    if (success == 0) {
        // Loop through linked list of interfaces
        temp_addr = interfaces;
        while (temp_addr != NULL) {
            if( temp_addr->ifa_addr->sa_family == AF_INET) {
                // Check if interface is en0 which is the wifi connection on the iPhone
                if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
                    // …
Run Code Online (Sandbox Code Playgroud)

objective-c ip-address ios

3
推荐指数
1
解决办法
7255
查看次数

获取iPhone或iPad设备的IP地址使用Swift 3

如何在不使用任何使用Swift 3编程语言的第三方库的情况下获取设备IP地址.实际上我使用以下代码来获取IP地址.

func getIPAddress() -> String? {
var address : String?

var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
if getifaddrs(&ifaddr) == 0 {

    var ptr = ifaddr
    while ptr != nil {
        defer { ptr = ptr.memory.ifa_next }

        let interface = ptr.memory

        let addrFamily = interface.ifa_addr.memory.sa_family
        if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {

            if let name = String.fromCString(interface.ifa_name) where name == "en0" {

                var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
                getnameinfo(interface.ifa_addr, socklen_t(interface.ifa_addr.memory.sa_len),
                            &hostname, socklen_t(hostname.count),
                            nil, socklen_t(0), NI_NUMERICHOST)
                address = …
Run Code Online (Sandbox Code Playgroud)

iphone ip-address ipad ios swift3

3
推荐指数
2
解决办法
1万
查看次数

iOS 是否可以在未经许可的情况下获取用户的大概位置?

您建议如何在未经用户许可的情况下获取用户所在国家/地区?是否可以使用手机信号塔三角测量或 WiFi 定位来获得大概位置?您建议使用什么其他方法来猜测用户所在的国家/地区?

location objective-c ios swift

3
推荐指数
1
解决办法
2464
查看次数

检测在iOS中启用私有api的热点

好的,所以我想检测用户在iOS设备中启用热点/网络共享的天气.我可以使用私人api知道它不会进入应用程序商店.

我试图通过私人api的列表/运行时标题,但有太多,无法决定哪些可能有用.

或者我是否可以知道UIApplicationWillChangeStatusBarFrameNotification在私有api中被触发的位置(可能需要调用活动调用和激活的热点等)

我试过检测个人热点并使用CaptiveNetwork,但它只返回连接的wi-fi ssid而不是创建的热点.

任何分享的知识都会非常有帮助

更新:@creker

使用上面的代码,编译器显示错误"SCDynamicStoreCreate不可用:在iOS上不可用.所以我进入SCDynamicStore.h并更改了以下内容

    SCDynamicStoreRef
SCDynamicStoreCreate            (
                    CFAllocatorRef          allocator,
                    CFStringRef         name,
                    SCDynamicStoreCallBack      callout,
                    SCDynamicStoreContext       *context
                    )               __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_NA);
Run Code Online (Sandbox Code Playgroud)

    SCDynamicStoreRef
SCDynamicStoreCreate            (
                    CFAllocatorRef          allocator,
                    CFStringRef         name,
                    SCDynamicStoreCallBack      callout,
                    SCDynamicStoreContext       *context
                    )               __OSX_AVAILABLE_STARTING(__MAC_10_1,__IPHONE_6_0);
Run Code Online (Sandbox Code Playgroud)

现在我能够获得状态1022和1023的字典.只是想通过更改这样的文件来确认(以前没做过)我将在归档构建(或任何其他问题)中存在任何问题,除此之外我们的事实知道这段代码不会进入应用程序商店

iphone-privateapi ios tethering personal-hotspot

2
推荐指数
1
解决办法
4011
查看次数

快速获取当前设备在 wifi 和蜂窝网络中的 IP 地址

   func getIPAddress() -> String {
    var address: String?
    var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
    if getifaddrs(&ifaddr) == 0 {
        var ptr = ifaddr
        while ptr != nil {
            defer { ptr = ptr?.pointee.ifa_next }

            let interface = ptr?.pointee
            let addrFamily = interface?.ifa_addr.pointee.sa_family
            if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {

                // wifi = ["en0"]
                // wired = ["en2", "en3", "en4"]
                // cellular = ["pdp_ip0","pdp_ip1","pdp_ip2","pdp_ip3"]

                let name: String = String(cString: (interface!.ifa_name))
                if  name == "en0" || name == "en2" || name …
Run Code Online (Sandbox Code Playgroud)

xcode ip-address swift swift5

2
推荐指数
1
解决办法
5794
查看次数

连接到移动数据swift3时如何获取ipaddress

我正在以这种方式获取电话的 ipaddress。

func getIPAddress() -> String? {
    var address : String?

    var ifaddr : UnsafeMutablePointer<ifaddrs>? = nil
    if getifaddrs(&ifaddr) == 0 {

        var ptr = ifaddr
        while ptr != nil {
            defer { ptr = ptr?.pointee.ifa_next }

            let interface = ptr?.pointee

            let addrFamily = interface?.ifa_addr.pointee.sa_family
            if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {

                if let name:String = String(cString: (interface?.ifa_name)!), name == "en0" {

                    var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
                    getnameinfo(interface?.ifa_addr, socklen_t((interface?.ifa_addr.pointee.sa_len)!),
                                &hostname, socklen_t(hostname.count),
                                nil, socklen_t(0), NI_NUMERICHOST)
                    address = …
Run Code Online (Sandbox Code Playgroud)

ip-address ios swift3

1
推荐指数
1
解决办法
2001
查看次数

参数标签'(count:,repeatedValue :)'与任何可用的重载都不匹配

我正在将我的Swift代码从版本2迁移到3,并且存在以下问题:

参数标签'(count:,repeatedValue :)'与任何可用的重载都不匹配

我的代码

static func getWiFiAddress() -> String? {
    var address: String?
    var ifaddr: UnsafeMutablePointer<ifaddrs>? = nil
    if getifaddrs(&ifaddr) == 0 {
        var ptr = ifaddr
        while ptr != nil {
            defer { ptr = ptr?.pointee.ifa_next }
            let interface = ptr?.pointee
            let addrFamily = interface?.ifa_addr.pointee.sa_family
            if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
                let name = String(cString: (interface?.ifa_name)!)
                var addr = interface?.ifa_addr.pointee
                // issue while assigning to hostname variable
                var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
                getnameinfo(&addr, socklen_t(interface.ifa_addr.memory.sa_len), …
Run Code Online (Sandbox Code Playgroud)

ios swift swift3

-2
推荐指数
1
解决办法
2043
查看次数