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

Tài liệu lập trình, tài liệu triển khai CRM, tài liệu triển khai ERP, tài liệu marketing

Tài liệu

Push Notifications trong IOS 10

  • Print

Phiên bản ios 10 phát hành với một sô tính năng, API notifications, cho phép bạn ta có thêt custom ( tuỳ biến) UI của Notification với Framework : UserNotificationsUI , UserNotificationsUI thay vì mặc định như các phiên bản IOS trước.

Framework mới này thiết lập các APIs cung cấp một cái hợp nhất, theo cách hướng đối tượng khi làm việc với cả local và remote notifications trên những nền tảng này

Điều này đặc biệt hữu ích khi so với các APIs đang tồn tại, local và remote notifications hiện tại đều được xử lý một cách tương tự và truy cập vào nội dung của notification không còn được thực hiện thông qua các dictionaries.

Trong bài hướng dẫn này, chúng ta sẽ cùng đi qua các vấn đề cơ bản của framework mới này và xem làm thế nào mà bạn có thể dễ dàng tận dụng điểm mạnh của nó để hỗ trợ thông báo cho ứng dụng của bạn.

Trước Khi đi vào chi tiết cách Implement Push Notificaiton trong bài viết, bạn hãy xem qua digram lìe cycle của Push Notification như hình bên dưới :

Sau khi xem qua diagram chắc hẳn bạn đã hiểu được life cycle của Notificaion trong trong IOS 10 như thế nảo rồi. Bây giờ chúng ta bắt tay vào luôn nhé :))

Các bước bạn cần phải làm :

  1. Create service extension
  2. Create content extension
  3. Xác định loại Notification bạn cần là gì ( images, url, text …)
  4. Khai báo các categories cần thiết để handle content extension
  5. Bạn càn định nghĩa payload khi gửi đến APNS
  6. Implement service extension
  7. Implement content extension và UI
  8. Thêm các actions ( nếu có)
  9. Handle các action trong content extension( Nếu có)
  10. Debug PushNotification. bạn download app để debug tại đây

Create service extension :

Mở Xcode và tạo project mới, chọn language Swift và tạo project. Sau đó bạn tạo service extension bằng chọn target như hình sau :

và resource service sẽ được thêm vào project như trong hình bên dưới :

Ở đây là nơi bạn Implement service extension . Bạn Implement service extension như sau :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
class NotificationService : UNNotificationServiceExtension {
 
     var contentHandler : ( ( UNNotificationContent ) -> Void ) ?
     var attemptContent : UNMutableNotificationContent ?
 
     override func didReceive ( _ request : UNNotificationRequest , withContentHandler contentHandler : @ escaping ( UNNotificationContent ) -> Void ) {
         self . contentHandler = contentHandler
         attemptContent = ( request . content . mutableCopy ( ) as ? UNMutableNotificationContent )
        
         if let attemptContent = attemptContent {
 
             if let urlString = attemptContent . userInfo [ "picture" ] as ? String ,
                 let data = NSData ( contentsOf : URL ( string : urlString ) ! ) as ? Data {
                 let path = NSTemporaryDirectory ( ) + "attachment"
                 _ = FileManager . default . createFile ( atPath : path , contents : data , attributes : nil )
                
                 do {
                     let file = URL ( fileURLWithPath : path )
                     let attachment = try UNNotificationAttachment ( identifier : "attachment" , url : file , options : [ UNNotificationAttachmentOptionsTypeHintKey : "public.jpeg" ] )
                     attemptContent . attachments = [ attachment ]
                    
                 } catch {
                     print ( error )
                    
                 }
             }
             contentHandler ( attemptContent )
         }
     }
    
     override func serviceExtensionTimeWillExpire ( ) {
         if let contentHandler = contentHandler , let attemptContent =    attemptContent {
             contentHandler ( attemptContent )
         }
     }
 
}
 

Tiếp đến bạn cũng làm điều tương tự với Notification Content và bạn sẽ có như sau :

và bạn sẽ Implement Content Extension như sau :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
import UIKit
import UserNotifications
import UserNotificationsUI
 
class NotificationViewController : UIViewController , UNNotificationContentExtension {
 
     @ IBOutlet weak var picture : UIImageView !
     @ IBOutlet weak var titleText : UILabel !
    
     override func viewDidLoad ( ) {
         super . viewDidLoad ( )
        
         let size = view . bounds . size
         preferredContentSize = CGSize ( width : size . width , height : size . width )
     }
    
     func didReceive ( _ notification : UNNotification ) {
         self . titleText . text = notification . request . content . title
        
         if let attachment = notification . request . content . attachments . first {
             if attachment . url . startAccessingSecurityScopedResource ( ) {
                 if let data = NSData ( contentsOfFile : attachment . url . path ) as ? Data {
                     picture . image = UIImage ( data : data )
                     attachment . url . stopAccessingSecurityScopedResource ( )
                 }
             }
         }
     }
    
    
     func didReceive ( _ response : UNNotificationResponse , completionHandler completion : @ escaping ( UNNotificationContentExtensionResponseOption ) -> Void ) {
        
         if response . actionIdentifier == "Action-1" {
         } else if response . actionIdentifier == "Action-2" {
             if let response = response as ? UNTextInputNotificationResponse {
                 print ( response . userText )
             }
             completion ( . dismiss )
 
         } else if response . actionIdentifier == "Action-3" {
             completion ( . dismissAndForwardAction )
         }
     }
 
}
 

viblo

Có thể bạn quan tâm:
 
  • Nhập khẩu nguyên liệu thực phẩm chức năng
  • Cách cắt giảm chi phí chuỗi cung ứng
  • Logistics thông minh và những chuyến xe "chạy rỗng"
  • Digital Marketing nâng cao hiệu quả hoạt động logistics
  • Vận Tải Và Buôn Bán Quốc Tế, Phân Chia Trách Nhiệm Vận Tải Trong Hợp Đồng Mua Bán Ngoại Thương
  • Chuyên Chở Hàng Hóa Xuất Nhập Khẩu Bằng Vận Tải Đa Phương Thức, Chương Trình Ngoại Thương
  • Phần mềm CRM (phần mềm quản lý khách hàng) cho lĩnh vực vận tải, hậu cần thường gồm những gì?
  • Một số chữ viết tắt tiếng Anh thường dùng trong Hàng hải
  • Quy trình Logistics trong xuất khẩu đường biển
  • Phân biệt OEM, ODM, OBM trong hàng hoá xuất nhập khẩu
  • Thủ tục nhập khẩu sợi tổng hợp filament các loại
  • ĐĂNG KIỂM XE CƠ GIỚI – QUY TRÌNH VÀ NHỮNG ĐIỀU CẦN BIẾT

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

Cách thay đổi nhạc chuông mặc định trên iPhone 07 September 2019
Hướng dẫn tạo Module Joomla 1.5 02 June 2015
Hướng dẫn toàn tập thu âm với ứng dụng Voice Memo trên iPhone 07 September 2019
Học cách viết code sạch đẹp 09 January 2019
Mobile 3D Graphics with OpenGL ES and M3G 31 May 2017
Lập trình AI trên Java 09 January 2019

Blogs

  • Giải pháp xem truyền hình trên smartphone
  • Kiểm tra nồng độ cồn trong máu
  • app SOS, gọi nhanh tới các số hỗ trợ (đường dây nóng) tại Việt Nam
  • Tự động Kiểm tra thông tin người gọi đến | Call Look
  • Khám phá những điều bí ẩn của vũ trụ
  • Từ Điển Ngôn Ngữ Ký Hiệu

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