iOS và yêu cầu hỗ trợ IPv6 của Apple đối với Corona Developer

Thảo luận trong 'Tin Corona' bắt đầu bởi Khúc Vương, 30/5/16.

  1. Administrator
    Khúc Vương
    Nhân viên CoronaViet
    Tham gia ngày:
    17/1/14
    Bài viết:
    486
    Đã được thích:
    130
    [​IMG]
    Bắt đầu từ ngày 01 tháng 6 năm 2016, Apple sẽ bắt đầu thực thi một chính sách mới mà bạn cần phải lưu ý. Nếu ứng dụng của bạn thực hiện bất kỳ kết nối mạng - mở một WebView, thực hiện network.request() hoặc sử dụng LuaSocket để giao tiếp với một server hoặc thiết bị - thì hãy đọc bài này. Hoặc nếu bạn không sử dụng chúng, bạn cũng cần phải biết điều sau đây:

    Tất cả các ứng dụng sử dụng mạng phải hỗ trợ IPv6 kể từ ngày 1 tháng 6 năm 2016.

    Một chút về lịch sử mạng

    Trong một thời gian dài, Internet đã sử dụng một địa chỉ IP “4-byte” (0-255) để đại diện cho mỗi thiết bị được kết nối. Trong thuật ngữ mạng, điều này được gọi là IPv4. Bạn có thể đã quen thuộc với chúng vì chúng có dạng giống như 192.168.1.15 .v.v ... dãy số này được áp dụng rộng rãi trên toàn thế giới nhưng IPv4 giờ đây đang cạn kiệt và sắp không còn đủ chổ cho tất cả.

    Trong nhiều năm qua, Internet đã chuyển sang một cách thức khác để cung cấp cho máy tính, điện thoại, tablet, và các thiết bị thông minh của bạn một địa chỉ duy nhất. Hệ thống mới này được gọi là IPv6 và hứa hẹn sẽ có thể đáp ứng cho Internet trong một thời gian rất dài.

    Vì Internet sắp hết địa chỉ IPv4 nên hiện nay có một số nguồn chỉ sử dụng địa chỉ IPv6. Và Apple muốn chắc chắn rằng tất cả ứng dụng của bạn sẽ hoạt động với các con số của mạng mới. Thế nên, bắt đầu từ ngày 01 tháng 6 năm 2016, bất kỳ ứng dụng mới nào submit hoặc cập nhật lên App Store sẽ phải hỗ trợ duy nhất địa chỉ IPv6.

    Điều này có ý nghĩa gì với bạn?
    Bạn không thể sử dụng địa chỉ IP thay cho tên server. Điều này áp dụng cho tất cả các loại kết nối mạng từ WebViews cho đến các cuộc gọi socket. Đôi khi, sẽ dễ dàng hơn khi sử dụng địa chỉ IP của một máy chủ (ví dụ: 192.168.212.15) thay cho tên máy chủ (ví dụ: www.example.com), nhưng điều này đã không được cho phép. Nếu bạn đang sử dụng địa chỉ IP cho các máy chủ của bạn và cần phải chuyển đổi, thực hiện một tìm kiếm trên Internet với dynamic dns và bạn sẽ tìm thấy một loạt các dịch vụ có thể ánh xạ tên server tới các địa chỉ IP của bạn. Nếu bạn đã có một tên miền, hãy kiểm tra các thiết lập DNS tại công ty đăng ký của bạn, họ sẽ cho phép bạn thiết lập ánh xạ của riêng bạn.

    Corona SDK có 2 tầng mạng cấp thấp (lower-level networking) mà các ứng dụng của bạn có thể được sử dụng: đó là network.* API và socket.* library. Các cuộc gọi network.* API đã tương thích IPv6 được một khoảng thời gian trước đây. Nếu bạn đang sử dụng bản public build mới nhất và chỉ sử dụng các hàm này, bạn đã được hỗ trợ từ Corona. Tuy nhiên, nếu bạn đang kết nối đến các server bằng cách sử dụng địa chỉ IP của chúng thay vì tên server, bạn sẽ cần phải ngừng sử dụng các địa chỉ IP và thay vào đó sử dụng một tên server.

    Nếu bạn đang sử dụng socket.*. Bạn sẽ cần phải sử dụng Daily Build 2016.2883 hoặc mới hơn và rebuild ứng dụng của bạn. Về cơ bản, Daily Build này có một bản nâng cấp cho các thư viện LuaSocket mới nhất có hỗ trợ IPv6.

    Làm thế nào để bạn biết nếu bạn đang sử dụng socket?
    Nếu bạn đang sử dụng plugin hoặc thư viện của bên thứ ba, thì bạn cần phải chắc chắn rằng chúng hoạt động đúng như mong đợi. Nếu bạn đang thực hiện bất kỳ kết nối peer-to-peer (các thiết bị giao tiếp với nhau mà không cần phải thông qua một network server), hoặc đang thực hiện truyền file FTP riêng của bạn, thì thư viện bạn đang sử dụng cần phải cập nhật để tránh sử dụng địa chỉ IP.

    Nếu bạn đang sử dụng LuaSocket, chúng ta hãy nhìn vào một số code điển hình mà cần phải được thay đổi:
    Mã (Lua):
    local socket = require( "socket" )

    local serverName = "ipv4.test-ipv6.com"
    local server_address, mesg = socket.dns.toip( serverName )  -- IPv4

    print( "server_address: ", serverName, server_address, mesg )
     
    Bởi vì socket.dns.toip() chỉ hoạt động với các địa chỉ IPv4, nên nó cần phải được thay đổi:
    Mã (Lua):
    local socket = require( "socket" )

    local serverName = "ipv6.test-ipv6.com"
    local addr_info, mesg = socket.dns.getaddrinfo( serverName )
    print( "server_address: ", addr_info[1].addr, mesg )
     
    Kết luận
    iOS sẽ có thể giao tiếp với các trang web IPv4 trong tương lai gần. Tuy nhiên, nếu cách duy nhất để ứng dụng của bạn sử dụng Internet là với IPv4, thì Apple sẽ không phê duyệt ứng dụng của bạn hoặc bất kỳ bản cập nhật nào cho nó. Apple sẽ không loại bỏ bất kỳ ứng dụng nào ra khỏi app store của họ, do đó bạn không cần phải cập nhật cho các ứng dụng hiện có nếu không cần thiết. Nhưng bất kỳ bản cập nhật mới hoặc ứng dụng mới submit lên store sau ngày 1 tháng 6 tới, nó sẽ phải tuân theo chính sách này.

    Để tìm hiểu thêm, hãy đọc tài liệu hướng dẫn phát triển của Apple về vấn đề này.
    Last edited by a moderator: 31/5/16

Chia sẻ trang này