Giới thiệu gem APNS
This post hasn't been updated for 7 years
APNS là viết tắt của "Apple Push Notification Services"
- Gem APNS hỗ trợ việc push notification về cho các ứng dụng iOS Ở bài viết này sẽ hưỡng dẫn các bạn có thể setup nhanh việc push notification tương tự như GCM, Rpush push notification về các thiết bị android
Install gem apns
sudo gem install apns
Setup
Convert your certificate
Tạo file certificate dưới định dạng p12. Sau đó chuyển đổi về dưới dạng một file pem
openssl pkcs12 -in cert.p12 -out cert.pem -nodes -clcerts
Sau khi đã tồn tại file pem, thực hiện cấu hình host port, pem_url trên lớp apns.rb
if Rails.env.development?
APNS.host = "gateway.sandbox.push.apple.com"
APNS.pem = '/path/to/pem/develop_file'
APNS.pass = 'your_password'
APNS.port = 2195
else
APNS.host = "gateway.push.apple.com"
APNS.pem = '/path/to/pem/production_file'
APNS.pass = 'your_password'
APNS.port = 2195
end
Example (Single notification)
Để gửi một thông báo đẩy bạn có thể chỉ cần gửi một chuỗi như các cảnh báo hoặc cung cấp cho nó một hash cho các cảnh báo, huy hiệu và âm thanh.
device_token = '123abc456def'
APNS.send_notification(device_token, 'Hello iPhone!' )
APNS.send_notification(device_token, :alert => 'Hello iPhone!', :badge => 1, :sound => 'default')
Example (Multiple notifications)
Gửi nhiều thông báo bằng cách sử dụng cùng một kết nối cho Apple
device_token = '123abc456def'
n1 = APNS::Notification.new(device_token, 'Hello iPhone!' )
n2 = APNS::Notification.new(device_token, :alert => 'Hello iPhone!', :badge => 1, :sound => 'default')
APNS.send_notifications([n1, n2])
Trong trường hợp muốn gửi thêm thông tin khác cùng với notification
APNS.send_notification(
device_token,
alert: 'Hello iPhone!',
badge: 1,
sound: 'default',
other: {
other_1: 123,
other_2: "123",
.....
})
Dữ liệu nhận về:
{
"aps": {
"alert": "Hello iPhone!",
"badge": 1,
"sound": "default"
},
"other_1": 123,
"other_2": "123",
.....
}
Get device tocken
Sau khi cài đặt xong việc push notification phía server, phần còn lại sẽ là đăng kí device tocken phía client
ApplicationAppDelegate.m
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// Register with apple that this app will use push notification
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
// Your app startup logic...
return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// Convert the binary data token into an NSString (see below for the implementation of this function)
NSString *deviceTokenAsString = stringFromDeviceTokenData(deviceToken);
// Show the device token obtained from apple to the log
NSLog(@"deviceToken: %@", deviceTokenAsString);
}
stringFromDeviceTokenData function
NSString* stringFromDeviceTokenData(NSData *deviceToken) {
const char *data = [deviceToken bytes];
NSMutableString* token = [NSMutableString string];
for (int i = 0; i < [deviceToken length]; i++) {
[token appendFormat:@"%02.2hhX", data[i]];
}
return [[token copy] autorelease];
}
Chi tiết tham khảo tại https://github.com/jpoz/APNS
All Rights Reserved