Tư Vấn Big Data
Push Notifications trong IOS 10
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 :
- Create service extension
- Create content extension
- Xác định loại Notification bạn cần là gì ( images, url, text …)
- Khai báo các categories cần thiết để handle content extension
- Bạn càn định nghĩa payload khi gửi đến APNS
- Implement service extension
- Implement content extension và UI
- Thêm các actions ( nếu có)
- Handle các action trong content extension( Nếu có)
- 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 )
}
}
}
|
- 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
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>