Language

Thực tiễn tốt nhất: Xử lý nền iOS - Background App Refresh Task

Không giống như Android, iOS có các hạn chế về việc sử dụng xử lý nền trong nỗ lực cải thiện thời lượng pin và trải nghiệm người dùng. Khi ứng dụng của bạn chuyển sang chế độ nền, đó là lúc developers mất quyền kiểm soát ứng dụng của họ. Cách thức và thời điểm ứng dụng của bạn có cơ hội thực thi task hoàn toàn phụ thuộc vào hệ thống. Ở trung tâm của iOS, Apple sử dụng thuật toán phức tạp nội bộ riêng để xác định ứng dụng nào được phép chạy trong nền, dựa trên nhiều yếu tố khác nhau như mô hình hoạt động của người dùng, trạng thái pin hiện tại, v.v.
Trong hướng dẫn này, chúng ta sẽ học cách yêu cầu thời gian thực thi định kỳ trên iOS. Sau khi hiểu cách nó hoạt động, chúng ta sẽ áp dụng kỹ thuật này cho một ứng dụng dựa trên BLE trong một số trường hợp cụ thể ở hướng dẫn tiếp theo.
Bắt đầu thôi!

Read More

Review sach: RxSwift Reactive Programming with Swift

Trong the gioi phat trien iOS lien tuc phat trien, viec thao tac thuan thuc reactive programming co the giup ban noi bat nhu mot lap trinh vien. Mot trong nhung tai nguyen tot nhat de di sau vao reactive programming voi Swift la cuon sach “RxSwift: Reactive Programming with Swift.” Huong dan toan dien nay cung cap moi thu ban can de hieu va tan dung RxSwift trong cac ung dung cua ban. Hay cung kham pha dieu gi lam cho cuon sach nay tro thanh tai lieu can doc cho cac lap trinh vien Swift.

Read More

Best practice: Quy trình quét BLE nâng cao trên iOS

Các nhà phát triển iOS đang xây dựng các ứng dụng đóng vai trò cả Peripheral và Central để trao đổi dữ liệu với các bản sao ứng dụng khác. Dữ liệu có thể trao đổi một lượng nhỏ thông tin thông qua các gói tin BLE hoặc giá trị chỉ báo cường độ tín hiệu (RSSI) từ thiết bị này sang thiết bị khác. Tuy nhiên, việc giữ ứng dụng chạy mãi ở foreground là không thể. Sớm hay muộn, ứng dụng sẽ chuyển sang chế độ background bởi người dùng và cuối cùng sẽ bị hệ thống tạm dừng tùy thuộc vào RAM khả dụng, mức tiêu thụ năng lượng và các yếu tố khác. Do đó, việc hiểu quy trình advertising và scanning trên thiết bị iOS giúp bạn xây dựng các ứng dụng tốt đáp ứng kỳ vọng của bạn.
Ở cuối hướng dẫn này, chúng ta sẽ xây dựng một ứng dụng đơn giản hoạt động vừa là scanner vừa là advertiser. Khi hai ứng dụng tìm thấy nhau, chúng sẽ ghi một bản ghi log để phân tích. Dựa trên kết quả, chúng ta sẽ tìm hiểu xem ứng dụng của mình sử dụng Core Bluetooth hiệu quả như thế nào.
Hãy bắt đầu thôi!

Read More

iOS: Giới thiệu Stack Views Lập trình

Khi kỹ năng phát triển iOS của bạn đang phát triển, tôi tin rằng bạn sử dụng UIScrollView, UICollectionView, UITableView, và các view native khác thường xuyên và thành thạo trong các ứng dụng của mình. Tuy nhiên, một số iOS developer vẫn không biết chính xác UIStackView là gì, nó được sử dụng cho mục đích gì hoặc trong tình huống nào chúng ta nên sử dụng UIStackView.
Trong tutorial này, tôi sẽ giới thiệu cho bạn UIStackView - Một view giúp chúng ta đơn giản hóa các layout iOS.

Hãy tưởng tượng bạn đang xây dựng một ứng dụng cho phép người dùng thêm hoặc xóa các view trong runtime. Nhớ cách chúng ta sẽ hoàn thành tác vụ này? Đầu tiên chúng ta phải xóa tất cả các constraint trong vùng liên quan và cập nhật lại tất cả. Hoặc nhớ trường hợp bạn triển khai view đăng nhập / đăng ký, bạn thêm nhiều text field và thiết lập constraint thủ công giữa các view đó. Trong những tình huống như vậy, UIStackView tỏ ra hữu ích hơn các view khác.

Read More

Tất Tần Tật Về Alamofire

Nếu bạn từng có cơ hội làm việc với networking trên iOS, chắc chắn bạn đã nghe về Alamofire, một thư viện networking được viết bằng Swift cho iOS và MacOS. Nó đơn giản hóa tất cả các công việc networking phổ biến trong ứng dụng của bạn.
Nếu bạn chưa gặp Alamofire, đừng lo, hướng dẫn này sẽ giới thiệu cho bạn tất cả các tác vụ mà Alamofire có thể xử lý cho bạn. Nếu bạn đã quen thuộc với nó, không sao, hãy coi bài viết này như một bản tóm tắt và tập trung cho cẩm nang Alamofire của bạn.
Hãy bắt đầu nào!

Sắp ra mắt!

Read More

Review sach: Building Applications With iBeacon

Trong bai viet truoc, toi da gioi thieu so luoc ve iBeacon - Mot giao thuc Bluetooth duoc xay dung tren nen tang BLE boi Apple, va tao mot demo don gian ve cach iBeacon co the danh thuc mot ung dung sau khi bi nguoi dung tat. Tuy nhien, toi chua de cap den cac khai niem nen tang khac trong Beacon, no cung khong cho ban cai nhin sau ve cac uu diem va nhuoc diem cua cong nghe manh me nay.
Hom nay, toi muon gioi thieu cho ban mot cuon sach tot cung cap kien thuc vung chac trong linh vuc Beacon, dac biet la iBeacon: Building Applications With iBeacon xuat ban boi O’Reilly.
Sau khi doc cuon sach nay, toi dam bao rang ban se co duoc kien thuc tot trong linh vuc iBeacon va tam tri cua ban se coi mo hon voi cac y tuong sap toi.
Bat dau thoi!

Read More

iOS Concurrency Nâng Cao: Async Operations [2]

Trong bài viết trước, iOS Concurrency Nâng Cao: Operations, chúng ta đã đi qua các khái niệm về Operation trên iOS và xây dựng một ứng dụng demo để tải một số bài viết của tôi. Sau khi tải các hình ảnh bìa, chúng sẽ được áp dụng một filter đơn giản, sau đó được hiển thị trong table view. Tuy nhiên, ứng dụng vẫn chưa hoàn thiện. Có điều gì đó không đúng với ứng dụng của chúng ta khiến nó không hiển thị đúng các hình ảnh đã tải. Trong hướng dẫn này, chúng ta sẽ tiếp tục từ nơi đã dừng lại.
Sẵn sàng nào!

Read More

iOS Concurrency Nâng cao: Operations [1]


Có hai kỹ thuật để xử lý Concurrency trong iOS: GCD - Grand Central Dispatch và Operations. Hầu hết thời gian, GCD cung cấp hầu hết các khả năng concurrency mà bạn cần. Tuy nhiên, đôi khi bạn sẽ muốn một số tùy chỉnh nâng cao bổ sung. Đó là lúc để sử dụng Operations. Tutorial này sẽ giới thiệu Operations trong Swift, cũng như giải thích khi nào và tại sao chúng ta sử dụng Operation thay vì GCD.
Hãy chuyển số!

Có một khoảng cách lớn giữa việc biết con đường và đi qua con đường.

Read More

Xây dựng trang cá nhân của bạn với Hexo


Khi tôi xây dựng trang web cá nhân này, mục tiêu đầu tiên của tôi là tận hưởng sở thích viết lách. Tôi viết bất cứ điều gì tôi học được trong công việc hàng ngày, và chia sẻ nó. Tôi hy vọng những chia sẻ của tôi sẽ giúp ai đó khi họ cần. Đổi lại, tôi sẽ có hiểu biết sâu hơn về những gì tôi viết, và đôi khi, nhận được “một ly cà phê” (Buy me Coffee) từ một người bạn tôi chưa từng gặp.

Sức mạnh đạt được bằng cách chia sẻ kiến thức, không phải bằng cách tích trữ nó

Một số bạn bè đến hỏi tôi cách xây dựng một trang như của tôi. Tôi rất vui được chia sẻ với bạn cách tôi xây dựng nó.
Sau hướng dẫn này, bạn có thể xây dựng trang web của riêng mình trong vòng 5 phút.
Tôi hy vọng sớm thấy trang web của bạn ra mắt!

Read More