Month: November 2020

  • Ứng dụng đa ngôn ngữ cho APNs

    Ứng dụng đa ngôn ngữ cho APNs

    Để làm đa ngôn ngữ cho APNs rất đơn giản, đầu tiên chúng ta cần những thứ sau đây:
    1. File Localizable.strings define các localization
    2. Đăng ký Push Notification cho ứng dụng
    Ở đây mình mặc định hai công việc trên đã được hoàn thành, và tập trung vào việc xử lý đa ngôn ngữ cho APNs.

    Thông thường, một Notification đơn giản sẽ có nội dung như sau:

    // Notification payload
    {
        "aps":{
           "alert":{
              "title":"Đây là tiêu đề thông báo",
              "body":"Còn đây chắc là nội dung thông báo"
           }
        }
    }
    Nội dung notification hiển thị trên device

    Như ví dụ trên, giá trị tương ứng với key titlebody sẽ được hiển thị trực tiếp vào tiêu đề và nội dung của notification như ảnh. Để áp dụng đa ngôn ngữ, ta sẽ thay thế titlebody bằng hai key khác là title-loc-keyloc-key, tiếp đó ta truyền giá trị của hai trường trên bằng key của localization đã define trong file Localizable.strings:

    // Notification payload
    {
        "aps":{
           "alert":{
              "title-loc-key":"notification_title",
              "loc-key":"notification_content"
           }
        }
    }
    // Localizable.strings content
     "notification_title" = "Thông báo ";
     "notification_content" = "Nội dung thông báo"; 
    Nội dung notification hiển thị trên device

    Như vậy là ta xong với các Notification có nội dung cố định. Đối với các Notification có sử dụng thêm tham số ví dụ như “Bạn có 10 thông báo mới” hay “NhatHM đã ném tiền vào mặt bạn”, chúng ta sử dụng thêm hai key title-loc-argsloc-args, và setting như sau:

    // Notification payload
    {
        "aps":{
           "alert":{
              "title-loc-key":"notification_title_args",
              "title-loc-args":["10"],
              "loc-key":"notification_content_agrs",
              "loc-args":["tinh thần"]
           }
        }
     }
    // Localizable.strings content
    "notification_title_args" = "Bạn có thêm %@ thông báo mới"; "notification_content_agrs" = "Nội dung thông báo với giá trị %@";
    Nội dung notification hiển thị trên device

    Để đề phòng trường hợp ứng dụng chưa định nghĩa các key trong file Localizable.strings, ta chỉ cần cung cấp thêm hai key titlebody và truyền vào giá trị mặc định cho Notification. Hai giá trị này sẽ được hiển thị khi ứng dụng client không tìm thấy strings được trả về trong Notification payload. Nên để đẹp trai thì Notification sẽ như thế này:

    // Notification payload
    {
        "aps":{
           "alert":{
              "title":"Đây là tiêu đề thông báo",
              "body":"Còn đây chắc là nội dung thông báo",
              "title-loc-key":"notification_title_args",
              "title-loc-args":["10"],
              "loc-key":"notification_content_agrs",
              "loc-args":["tinh thần"]
           }
        }
     }

    Như vậy là đủ để quẩy đa ngôn ngữ cho Notification rồi đấy 😀

  • Triển khai CI/CD với GitLab-CI (P1 – Cài đặt và khởi tạo)

    Triển khai CI/CD với GitLab-CI (P1 – Cài đặt và khởi tạo)

    Chú ý 1: Phạm vi của bài viết bao gồm việc triển khai CI/CD với GitLab-CI trực tiếp trên thiết bị MacOS, không sử dụng container

    Chú ý 2: Do nội dung của phần này hơi nhiều nên mình xin phép tách thành nhiều bài nhỏ để mọi người đọc đỡ bị mệt mỏi và dễ focus vào các phần muốn đọc hơn

    Bỏ qua các triết lý hay định nghĩa về CI/CD, mình xin phép đề cập luôn đến việc triển khai CI/CD . Để triển trai CI/CD với GitLab-CI, chúng ta cần làm các bước sau:

    1. Cài đặt gitlab-runner trên thiết bị node (MacOS, Window)
    2. Khởi tạo runner liên kết với GitLab Repository
    3. Cấu hình GitLab Runner với config.toml (optional)
    4. Cấu hình các jobs CI/CD với .gitlab-ci.yml

    1. Cài đặt gitlab-runner trên thiết bị node

    Để cài đặt gitlab-runner trên máy, chạy command sau trên terminal:

    > brew install gitlab-runner

    Ngoài ra, các bạn có thể tham khảo quá trình cài đặt trên doc của GitLab (https://docs.gitlab.com/runner/install/)

    Sau khi cài xong, bạn có để sử dụng command sau để kiểm tra phiên bản hiện tại trên máy:

    > gitlab-runner verify

    2. Khởi tạo runner liên kết với GitLab Repository

    Chú ý: Để truy cập các chức năng liên quan đến cài đặt GitLab-CI, hãy đảm bảo tài khoản được cấp quyền Maintainer hoặc cao hơn.

    Đầu tiên, chúng ta truy cập GitLab Repo cần chaỵ CI/CD, sau đó chọn Settings -> CI/CD -> Expand section Runners.

    Thông tin để đăng ký Runner sẽ hiển thị ở đây

    Ở đây, hãy chú ý đến hai giá trị là gitlab-ci coordinatorgitlab-ci token

    Sau đó. ta dùng command sau để bắt đầu khởi tạo Runner:

    > gitlab-runner register

    Tiếp đó, ta nhập các thông tin của Runner theo hướng dẫn

    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
    > https://gitlab.techover.io/ (gitlab-ci coordinator ở trên kia)
    Please enter the gitlab-ci token for this runner:
    > oH5aKzZsqibPr******** (gitlab-ci token ở trên kia)
    Please enter the gitlab-ci description for this runner:
    > Techover IO Runner (Mô tả cho runner)
    Please enter the gitlab-ci tags for this runner (comma separated):
    > develop (gắn tag cho runner)
    Please enter the executor: ssh, virtualbox, docker+machine, kubernetes, parallels, shell, docker-ssh, docker-ssh+machine, custom, docker:
    > shell (tuỳ chọn executor, ở đây mình sẽ dùng shell)
     Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!  

    Như vậy là đã đăng ký xong runner với GitLab Repo, giờ chúng ta sẽ start runner bằng command sau:

    > gitlab-runner start 

    Reload lại page GitLab, ta sẽ thấy Runner xuất hiện trong danh sách Runners của Repo. Như vậy là đã hoàn thành việc khởi tạo runner cho Repo.

    3. Cấu hình GitLab Runner với config.toml (Optional)

    Bạn có thể skip qua phần 3 nếu không hứng thú, vì nếu không làm thì GitLab-Ci vẫn chạy bình thường, mà ở đây mình cũng chỉ giới thiệu qua thôi 😀 chi tiết mình sẽ cố gắng làm trong một phần khác trong tương lai . File config.toml bao gồm các cài đặt, tuỳ chỉnh cho runner chạy trên thiết bị. Ta có thể truy cập file config.toml với đường dẫn sau:

    > ~/.gitlab-runner/config.toml 

    Tại đây bạn có thể tuỳ chỉnh rất nhiều các Các chi tiết về việc cài đặt có thể tham khảo trên doc của GitLab: https://docs.gitlab.com/runner/configuration/advanced-configuration.html

    Ví dụ ở đây mình thêm cài đặt giới hạn size của file log lên 40MB (Mặc định là 4MB)

    4. Cấu hình các jobs CI/CD với .gitlab-ci.yml

    GitLab-CI không có cấu hình mặc định cho CI/CD, để cấu hình ta cần thêm file .gitlab-ci.yml vào thư mục gốc của Repo. File sử dụng YAML, có thể tham khảo cú pháp ở link sau: https://docs.gitlab.com/ce/ci/yaml/

    Dưới đây là ví dụ template file .gitlab-ci.yml của GitLab cho Repository sử dụng Swift

    # This file is a template, and might need editing before it works on your project.
    # Lifted from: https://about.gitlab.com/2016/03/10/setting-up-gitlab-ci-for-ios-projects/
    # This file assumes an own GitLab CI runner, setup on a macOS system.
     stages:
       - build
       - test
       - archive
       - deploy
     
    
     build_project:
       stage: build
       script:
         - xcodebuild clean -project ProjectName.xcodeproj -scheme SchemeName | xcpretty
         - xcodebuild test -project ProjectName.xcodeproj -scheme SchemeName -destination 'platform=iOS Simulator,name=iPhone 8,OS=11.3' | xcpretty -s
       tags:
         - ios_11-3
         - xcode_9-3
         - macos_10-13
     
    
     archive_project:
       stage: archive
       script:
         - xcodebuild clean archive -archivePath build/ProjectName -scheme SchemeName
         - xcodebuild -exportArchive -exportFormat ipa -archivePath "build/ProjectName.xcarchive" -exportPath "build/ProjectName.ipa" -exportProvisioningProfile "ProvisioningProfileName"
       only:
         - master
       artifacts:
         paths:
           - build/ProjectName.ipa
       tags:
         - ios_11-3
         - xcode_9-3
         - macos_10-13 

    Để apply các cài đặt trong file .gitlab-ci.yml, ta chỉ cần đẩy file lên origin. Sau đó Runner sẽ tự động nhận và chạy jobs theo những gì đã định nghĩa trong file.

    Để kiểm tra lịch sử chạy các Pipeline, chúng ta truy cập GitLab Repo chaỵ CI/CD, sau đó chọn CI/CD .

    Vậy là chúng ta đã hoàn tất quá trình cài đặt và khởi tạo Gitlab runner cho một Repository. Ở các bài viết tiếp theo, mình sẽ nói về việc cài cắm pipeline để chạy CI/CD cho các dự án thực tế. Xin cảm ơn các bạn đã theo dõi 😀