Supporting IPv6-only Networks what things should be taken care? - ios

Regarding apple's announcement regarding iPv6 -only networks, i have some queries.
https://developer.apple.com/news/?id=05042016a
1) What will happen if my apps are already uploaded without ipv6 support ?
2) I am using old Reachability class, will it create any issue?
3) I am using ASIHTTP library which is using NSURLConnection.
4) If i am not using any static iP in my code but my server is on iPV4 support then will it be create any trouble ?
Thanks

1) Already Uploaded apps are working fine, actually i have not used any static ip addresses in my app.
2) Make sure in old reachability class, you have not used any addresses like 0.0.0.0.
3)It won't create any problem.
4) Not any relation with server.So server may be iPv6 or iPv4, it won't affect your app.

Related

routing the network over ipv4 instead of ipv6 in iOS

I am using the 3rd party library which only support ipv4.
Whenever there is ipv6 network in my iOs device 3rd party fail.Is there any way I can force or convert or create ipv4 network and do routineg of the application in ipv4 instead of ipv6.
I found the below link but don't know how to implement it or does apple will approve that. https://developer.apple.com/documentation/networkextension/neipv4route
Any help on this please
I think you’ve answered your own question. The library your using only supports ipv4. So either you need to find a library that supports ipv6 or write your own since you can’t control what the network is broadcasting.
Apple has a write up on this here : supporting ipv6

.local domain and iOS/OSX

Hello I'm working with an hardware team to a really nice device that we can connect through with an iOS application. Currently we are using an ip address to perform calls on this device and it is working perfectly. Since we read about the new ATS specifics by Apple, we are trying to move the connection to a .local domain instead of using an IP address, so that we can configure domains exceptions in the App Transport Security Settings. We are experiencing a lot of problems trying to connect to the .local domains from the App... it seems that the DNS is never resolved. Are there any known bug related to .local domain? I seen some very old bugs... but nothing related to iOS 10/9.
Note: Currently to connect to the device we have to put the device in Access Point mode and from iOS settings we choose it as "wi-fi" router.
You're looking for Zero configuration networking, specifically DNS Service Discovery, an industry standard that Apple markets as Bonjour. That's what allows a device to list its services for DNS discovery through the .local top-level domain.
"Publication: An Example" in Apple's Bonjour guide is a good place to start for understanding what you'd need to do to implement this as a hardware vendor.

Objective-C - itune app store rejected my app after review, main reason is IPv4 needs to be IPv6?

I have WebRTC framework for my iOS app.
But Apple iTune app store review team, rejected my app (even though it was working in my local hardware's, cost me 6 months of work). After waiting so long, they rejected, because its IPv4, has to be IPv6?
I cant simply change the whole WebRTC Framework that i have used in my app.
My target clients are only IPv4 (not IPv6, i am not even interested to use IPv6), is there no way to solve it? I am using this framework: https://cocoapods.org/pods/libjingle_peerconnection
Any advise/suggestion, has anyone tried the libjingle_peerconnection library to make compatible for IPv6?
EDIT: at 3.56AM
You need to add more details in your question to get an appropriate and correct answer.
My reason for putting an answer is not to answer your question as we need further information. My goal to answer is to make everyone aware how IPv6 functionality can be enabled when developing an Webrtc app.
Server side
Generally speaking primarily there are two main backend components the Webrtc clients connect to:
Signaling server : This is used to carry signaling information such as your sdp between Webrtc endpoints. Can be implemented using web sockets or http or other mechanisms
Stun and a relay/turn server: for obvious Udp hole punching through NAT traversal and if p2p not possible, to act as a relay between endpoints.
For IPv6 both of these servers should support IPv6 connections to it.
Client side
When apple tests IPv6, it must be disabling IPv4 network interface so that the iOS networking stack is forced to use IPv6. Hence you need to enable Webrtc stack to use IPv6 interface. This can be done by adding the constraint googIPv6 : true in the createpeerconnection constraints.
Other than this if you are using any other app servers in your code, you will have to make sure they accept v6 connections.

IPv6 Apple updates

With the recent announcements by Apple regarding Supporting IPv6-only Networks. I have few queries:
1) I have code which uses NSURLConnection all over the place and I think it comes under CFNetwork APIs.
Do I need to update my code to NSURLSession mandatorily as mentioned on their website: https://developer.apple.com/news/?id=05042016a
2) IPv4-specific APIs or hard-coded IP addresses:
What does IPv4 specific APIs are there ? I dont see good documentation on Apple website about this. If anyone has any insights on this and can help me out it would be really helpful.
NSURLConnection is fine (see https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW21)
Apple lets you use BSD sockets directly, and it would be possible to implement code based on that which doesn't cope with IPv6. Hardcoded IPv4 addresses "123.123.123.123" won't resolve over IPv6, you should always be looking up IP addresses "www.stackoverflow.com"
In fact, it's probably a good idea to read the whole of the doc I linked to above. Amongst other things, it includes details of how to test IPv6 compatibility by sharing your regular internet connection using a El Capitan Mac as an simulated IPv6 access point.

Connect more than 3 ios devices with each other

I want to connect 3 iOS devices with each other.
For example, One iOS device will be like a server, and other 2 device will connect like client, to that server.
To make iOS Device, as server, i am using CocoaHTTPServer,
There is no any internet connection, should use only wi - fi
connection.
Any suggestion ?
I suggest you to use bonjour protocol which is used in ichat..this helps to deal with your problem..
These links may help you..
http://en.wikipedia.org/wiki/Bonjour_%28software%29
http://en.wikipedia.org/wiki/Apple_Filing_Protocol
ok, i solved this problem.
What i have:
(1) one wi-fi router
(2) two iOS devises.
Create local wi-fi network,
Connect 2 devises.
one of the devise will be server, by using this open source library CocoaHTTPServer.
example:
https://github.com/robbiehanson/CocoaHTTPServer/tree/master/Samples/iPhoneHTTPServer
in the iPhone(which is server) you should find the ip, that given by wi fi network, like 192.168.0.101
And uala, go to the iphone browser(which is not server)
and write url:192.168.0.101:9999 number

Resources