Khi nhận được thông báo đẩy từ xa khi ứng dụng ở chế độ nền, ứng dụng sẽ nhập applicationDidBecomeActive. Từ đó, làm cách nào tôi có thể truy cập vào NSDictionary của dữ liệu từ thông báo?Làm cách nào để truy cập dữ liệu thông báo đẩy từ xa trên applicationDidBecomeActive?
Trả lời
Dữ liệu thông báo được gửi tới ứng dụng của bạn theo số application:didReceiveRemoteNotification:
. Nếu bạn muốn xử lý nó trong applicationDidBecomeActive:
bạn nên lưu trữ nó trong application:didReceiveRemoteNotification:
và đọc lại nó trong applicationDidBecomeActive
.
Nếu ứng dụng của bạn ở trạng thái background
khi nhận được thông báo đẩy và nhấn, ứng dụng sẽ được gọi với application:didFinishLaunchingWithOptions:
chứ không phải application:didReceiveRemoteNotification:
.
Tải trọng thông báo đẩy có thể được truy cập trong application:didFinishLaunchingWithOptions:
từ launchOptions
từ điển.
Đây không phải là ứng dụng chính xác: didFinishLaunchingWithOptions: không được gọi khi ứng dụng ở chế độ nền, điều này chỉ được gọi khi ứng dụng khởi động. những gì bạn đang nói là hoàn toàn oposite, đầu tiên nó sẽ được gọi là ứng dụng: didReceiveRemoteNotification: và sau đó applicationDidBecomeActive: –
tôi sử dụng mã này để quản lý việc đẩy mạnh:
Trong appdelegate
@implementation AppDelegate{
NSDictionary *dUserInfo; //To storage the push data
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Check for options
if (launchOptions != nil)
{
//Store the data from the push.
dUserInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dUserInfo != nil)
{
//Do whatever you need
}
}
return YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
//Data from the push.
if (dUserInfo != nil)
{
//Do whatever you need
}
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//Store the data from the push.
if (userInfo != nil)
{
dUserInfo = userInfo;
}
}
Tôi hy vọng điều này sẽ có ích cho một ai đó.
Mã hóa vui vẻ.
Swift phiên bản:
var dUserInfo: [NSObject : AnyObject]?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// code...
if let info = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
dUserInfo = info
}
return true
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
dUserInfo = userInfo
}
func applicationDidBecomeActive(application: UIApplication) {
// code...
self.yourAction(dUserInfo)
}
func yourAction(userInfo: [NSObject : AnyObject]?) {
if let info = userInfo?["aps"] as? Dictionary<String, AnyObject> {
}
}
- 1. Dữ liệu thông báo đẩy truy xuất
- 2. iOS Push Notification - Làm thế nào để có được các dữ liệu thông báo khi bạn nhấp vào biểu tượng ứng dụng thay vì thông báo
- 3. Làm cách nào để gửi thông báo đẩy bằng Erlang?
- 4. Tôi làm cách nào để truy xuất các bản ghi được cập nhật trong thời gian thực? (thông báo đẩy?)
- 5. Sử dụng XMPP để thông báo người dùng đẩy trên Android - mọi cách nhắm mục tiêu các thông báo này để họ không truy cập Google Talk, v.v.
- 6. Làm cách nào để truy cập tệp/dữ liệu/dữ liệu từ trình giả lập Android từ Genymotion?
- 7. Cách nhận mã thông báo truy cập từ GoogleCredential?
- 8. Cách truy cập current_user từ Thông báo Rails?
- 9. Cách tốt nhất để truy cập cơ sở dữ liệu từ xa: thông qua dịch vụ web hoặc truy cập DB trực tiếp?
- 10. Nhận dữ liệu từ thông báo GCM
- 11. Truy cập TEAMCITY từ máy từ xa
- 12. Truy cập CouchDB Futon trên máy chủ từ xa
- 13. Làm cách nào để truy cập cơ sở dữ liệu mysql trực tuyến trên Android?
- 14. Làm cách nào để nhận mã thông báo truy cập từ yêu cầu đã ký trên Facebook?
- 15. Làm cách nào để hiển thị lại Chế độ xem thông báo "Bạn muốn gửi cho bạn thông báo đẩy"?
- 16. Làm cách nào để hồ sơ ứng dụng iOS khởi động từ thông báo đẩy?
- 17. Truy cập Android vào cơ sở dữ liệu SQL từ xa
- 18. Làm cách nào để truy cập các tệp trên Heroku?
- 19. Làm cách nào để truy xuất dữ liệu mới?
- 20. Làm cách nào để nhận mã thông báo truy cập được cập nhật, sử dụng mã thông báo làm mới được lưu trữ
- 21. Làm cách nào để truy cập các giá trị hiện tại từ túi dữ liệu Chef?
- 22. Làm cách nào để nhận thông báo đẩy từ tài khoản Gmail của tôi?
- 23. Thông báo đẩy và kéo trên iphone
- 24. Làm cách nào để truy cập cơ sở dữ liệu MS Access từ Oracle?
- 25. Tôi làm cách nào để truy cập dữ liệu bài đăng từ trò chơi scala?
- 26. Làm cách nào để truy cập thư mục dữ liệu JBoss từ bên trong ứng dụng?
- 27. Đăng ký Thông báo Đẩy
- 28. Thông báo Xem từ xa Android
- 29. Làm thế nào để cập nhật cơ sở dữ liệu trên máy chủ MSL từ xa (Mã EF Đầu tiên)
- 30. Kiểm tra Máy chủ Truy cập Cơ sở dữ liệu Từ xa
Xin lỗi vì đã làm sống lại này, nhưng những gì xảy ra khi bạn nhận được thông báo về ứng dụng: didReceiveRemoteNotification và ứng dụng của bạn là ở mặt trước, có nghĩa là applicationDidBecomeActive sẽ không được gọi. –
Trong 'application: didReceiveRemoteNotification:' bạn có thể truy vấn '- [UIApplication applicationState]' để tìm hiểu xem ứng dụng của bạn đã có ở nền trước chưa. Nếu đó là sau đó chỉ cần xử lý thông báo ngay lập tức. –