DEVELOPER TRAINING

  • Trang chủ
  • Khóa học
  • Tutorials
    • React Native
  • Đăng ký
  • Tài liệu
    • Thường thức iPhone
    • Mạng xã hội , Social Network
    • Android, ios, Windows phone, Blackberry
    • CRM
    • ERP
    • Joomla, Wordpress, Drupal...
    • Codeigniter, Zend, Phalcon...
    • Magento, Prestashop, opencart ...
    • Tài liệu khác
  • Tuyển dụng
    • Tìm người cùng khởi nghiệp
    • Tuyển thực tập lập trình
  • Chuyển đổi số
    • Chuyển đổi số
    • Kinh tế số
    • Kinh tế chia sẻ
    • Fintech
    • Mạng xã hội
    • insurtech
    • Bất động sản 4.0

Magento, Prestashop, opencart ...

Tài liệu

Integrate mã javascript trên dự án ios

  • Print

1. Giới thiệu

Nghiên cứu chưa xong đã phải viết báo cáo rồi, ? , thú thực là muốn viết ngon thì phải 2 tháng nữa cơ sinh con non thế này con nên nó yếu lắm, bạn đang đọc thì ráng chịu nhá, lỗi ko phải của tớ đâu :v.

lap trinh ios iphone ipad

Sau một thời gian tự làm app, mình nhận thấy việc up app 1 mình tốn khá nhiều thời gian ảnh hưởng đến quá trình bạn distribute and earn money from product. Vì thế mình muốn tìm đến 1 phương cách có thể update app mà hạn chế phải up version mới của app len appstore -> Mình đang nghiên cứu các integrate javascript vào trong ios sau đó module hoá 1 số bộ phận của app bằng javascript để dễ dàng update code.

2. JavaScripCore Framework

Được apple giới thiệu từ WWDC 2013, javascriptcore giúp cho bạn integrate script vào trong app, trước kia chỉ có C api cho Mac và bay giờ là javascriptcore build on top cả trên mac và ios, giúp cho việc lập trình trở nên đơn giản và ít lỗi hơn.

Để reflect component trong javascript Apple định nghĩa các class cơ bản sau:

JSVirtualMachine : js code được chạy trên máy bảo js được định nghĩa bằng class.Bản thân JSVirtualMachine không hỗ trợ multithread, nếu bạn muốn chạy đa luồng thì bạn phải tạo nhiều JSVirtualMachine. Mỗi JSVirtualMachine Object có bộ nhơ heap và barbage collector của riêng nó, và không có liên hệ với JSVirtualMachine khác.

bfe81039d7d298f2fd73864f498597c1fb7db06a

JSContext : Tương ứng với Global object trong javascript, không giống với JSVirtualMachine bạn có thể thoải mái pass object giữa các JSContext.

22b93101efaab438028d9a93d331d1c65f845a1b

84b80828fd2c49e8f71a29d2f979b59495979779

JSValue: Mọi giá trị lấy được từ JSContext là JSValue. JSValue đóng gói mọi kiểu dữ liệu của Javascript. Mỗi JSValue được gắn chặt với JSContext object.

f21e66958dfdb51f9f7d52523f688771f53b3c1d

3. Thực hành

  • Để sử dụng javascript code bạn làm như sau:
    • Khởi tạo JSContext
    • Load Javascript Code từ file String
    • Get Object từ javascriptCode
    • Chạy object bằng hàm callWithArguments

1
2
3
4
5
6
7
8
9
10
11
12
13
 
@ IBAction func changeColor ( sender : AnyObject ) {
         let path = NSBundle . mainBundle ( ) . pathForResource ( "color" , ofType : "js" )
         let context = JSContext ( )
         context . setObject ( ViewController . self , forKeyedSubscript : "ViewController" )
             do {
       try context . evaluateScript ( NSString ( contentsOfFile : path ! , encoding : NSUTF8StringEncoding ) as String )
         let randomColorScript = context . objectForKeyedSubscript ( "getRandomColor" )
         print ( randomColorScript . callWithArguments ( [ self ] ) )
     } catch {
 
     }
 

Để sử dụng apple code trong javascript bạn có 2 cách:

  • Với block: với objC thì măc định được visible trong js code với swift bạn phải khai báo @objc cho block của swift
  • Với class: Sử dụng JSExportProtocol Khai báo 1 protocol extend từ JSExportProtocol

1
2
3
4
5
6
7
8
9
10
 
@ objc protocol ViewControllerExportJS : JSExport {
     var color : String { get set }
     func changeBackgroundColor ( hex : String )
     static func twoParametersExample ( hex : String , hax : String )
}
 
class ViewController : UIViewController , ViewControllerExportJS {
. . . .
 

Ở file javascript bạn có thể sử dụng như sau:

1
2
3
4
5
6
7
8
9
10
11
 
function getRandomColor ( controller ) {
     var letters = '0123456789ABCDEF' ;
     var color = '#' ;
     for ( var i = 0 ; i < 6 ; i ++ ) {
         color += letters [ Math . floor ( Math . random ( ) * 16 ) ] ;
     }
     ViewController . twoParametersExampleHax ( color , color ) ;
     controller . changeBackgroundColor ( color )
     }
 

  • Chú ý là với function có từ 2 paramter trở lên. Vì javascript ko có từ gợi nhớ parameter nên bạn append vào tên method trong swift twoParametersExample(hex: String, hax: String) thành method với tên twoParametersExampleHax trong js (cái này ko có trên raywenderlich đâu nhá :v)

4. Kết luận

Có vẻ là khi chạy code trên javascript bị delay 1 chút về time xử lý. Bạn có thể test bằng project example trong bài viêt này. http://www.mediafire.com/download/ztgly24x1aucd6i/JavascriptCoreTest.zip Tham khảo tại : https://www.raywenderlich.com/124075/javascriptcore-tutorial

Viblo

Có thể bạn chưa biết:
  • Quản lý chi tiêu, thu/chi kinh doanh, tài chính cá nhân,... trên smartphone
  • Hướng dẫn cài đặt
  • Hướng dẫn sử dụng APP QUẢN LÝ THU CHI, loại thu/chi nhiều lần, thu/chi hợp đồng, thu/chi nợ, trả góp,...
  • Cách tra cứu Chứng minh nhân dân, hay Thẻ Căn cước Công dân
  • Mẫu file excel theo dõi Quản lý Nhập Xuất Tồn đơn giản
  • Giáo trình nghiệp vụ kế toán - chương 7 Kế toán nghiệp vụ mua hàng trong nước và xuất khẩu hàng hoá, Kế toán doanh nghiệp
    Hướng dẫn cài đặt và sử dụng trên smartphone và tablet Android
    Giáo trình nghiệp vụ kế toán - chương 3 Tài Khoản và sổ kế toán
    Giáo trình nghiệp vụ kế toán - chương 2 Chứng từ kế toán
    Giáo trình nghiệp vụ kế toán - chương 9 Kế toán nghiệp vụ xác định kết quả kinh doanh, Kế toán doanh nghiệp
 

Có thể bạn chưa biết:

TUYỂN THỰC TẬP REACT NATIVE

* Trang bị kỹ năng về JS, lập trình hybrid app, sử dụng những công cụ hỗ trợ (VScode, github, sourcetree, ...)
* Thành quả mong muốn là các bạn tham gia sẽ có được kỹ năng lập trình hybrid app

Biểu mẫu đăng ký training tại đây >> http://bit.ly/2NK9YWd

TEAM MOBILE APPS - CTY DVMS

  • Prev
  • Next
  • tweet

Nhiều người quan tâm

  • Mã nguồn mạng xã hội giống y Facebook
  • Tìm co-founder cho các dự án khởi nghiệp
  • Phương pháp giải quyết phản bác
  • Gần 700 forum, trang rao vặt giúp tăng độ phủ quảng cáo, SEO, Backlink
  • Danh sách 6.500 website mua bán rao vặt, tốt để quảng cáo, SEO và tạo backlink
  • Top danh sách hơn 300 website submit PR cao

Tin mới

DMS (Hệ thống quản lý phân phối) là gì? 26 April 2016
Không cho người khác xem tin nhắn SMS, Messenger trên màn hình khoá iPhone 09 September 2019
Tại sao các công ty Product không thích nhân sự Outsourcing? 09 January 2019
50 dòng lệnh Linux cần biết 09 January 2019
Bí kíp khởi nghiệp (startup) tiết kiệm và hiệu quả 14 November 2017
Làm quen với Docker Compose 09 January 2019

Blogs

  • Giải pháp xem truyền hình trên smartphone
  • Tìm kiếm lời chúc hay và ý nghĩa
  • Mẫu văn bản cho công ty gia công phần mềm, phát triển mobile apps
  • Driver Plus nhắc nhở bảo dưỡng xe, thay nhớt...
  • Happy Life - Cuộc sống mạnh khỏe và hạnh phúc hơn
  • Ứng dụng SMS gateway

Lập trình ứng dụng di động

  • Lập trình Android
  • Lập trình iOS
  • Lập trình Windows Phone
  • Lập trình BlackBerry OS
  • Lập trình BlackBerry 10
  • Lập trình J2ME
  • Lập trình game mobile
  • Đồ họa cho ứng dụng
  • Lập trình Phonegap
  • Lập trình Unity 3D
  • Lập trình Xamarin
  • Lập trình web mobile
  • Lập trình Node js

Học lập trình

  • Lập trình .NET
  • Lập trình C/C++
  • Visual C++
  • Visual C#
  • Lập trình Visual Basic
  • Visual Basic .NET
  • Lập trình Java
  • Lập trình trên Linux
  • Công cụ, ebooks .NET
  • Dự án lập trình .NET
  • Hỏi đáp về lập trình
  • Hướng dẫn cho người mới
  • Thủ thuật
  • Hỏi đáp tin học

Lập trình web

  • Lập trình PHP
  • Flash và các vấn đề
  • Thiết kế web
  • Lập trình web JSP
  • Lập trình web ASP
  • Lập trình web ASP.NET
  • HTML - CSS
  • Webmaster/ SEO
  • JavaScript / Ajax, jQuery
  • Lập trình Phalcon

Cơ sở dữ liệu

  • MS SQL Server
  • MySQL
  • Oracle
  • Các hệ CSDL khác
  • Bigdata
  • Blockchain

OpenSource Master

  • Lập trình và quản trị Joomla
  • Lập trình và quản trị Wordpress
  • Lập trình và quản trị Drupal
  • Lập trình và quản trị SugarCRM
  • Lập trình và quản trị VTigerCRM
  • Lập trình và quản trị Open ERP
  • Lập trình và quản trị Dolibarr ERP

 

Copyright © Tạo Ứng Dụng, All Rights Reserved. Developed By DVMS | All solution for smartphone & tablet.. Designed By JoomShaper

Tìm kiếm

  • Trang chủ
  • Khóa học
  • Tutorials
    • React Native
  • Đăng ký
  • Tài liệu
    • Thường thức iPhone
    • Mạng xã hội , Social Network
    • Android, ios, Windows phone, Blackberry
    • CRM
    • ERP
    • Joomla, Wordpress, Drupal...
    • Codeigniter, Zend, Phalcon...
    • Magento, Prestashop, opencart ...
    • Tài liệu khác
  • Tuyển dụng
    • Tìm người cùng khởi nghiệp
    • Tuyển thực tập lập trình
  • Chuyển đổi số
    • Chuyển đổi số
    • Kinh tế số
    • Kinh tế chia sẻ
    • Fintech
    • Mạng xã hội
    • insurtech
    • Bất động sản 4.0