2012-10-17 18 views
7

Tôi muốn biết nếu có một cách nào để biết nếu một ứng dụng (có thể đóng hoặc mở ở chế độ nền) đã được đưa ra với một nhấp chuột vào:iOS/XCode: làm thế nào để biết rằng ứng dụng đã được đưa ra với một nhấp chuột vào thông báo hoặc trên biểu tượng ứng dụng springboard?

  • một thông báo (trong trung tâm thông báo)?
  • hoặc biểu tượng ứng dụng trên bàn đạp?

Cảm ơn !!

+0

Tôi giả sử bạn có nghĩa là * bất kỳ * ứng dụng nào, không chỉ của riêng bạn? –

+1

Điều này không liên quan đến Xcode. –

Trả lời

6

Từ Apple Documents trên Scheduling, Registering, and Handling Notifications :

iOS Lưu ý: Trong iOS, bạn có thể xác định xem một ứng dụng được đưa ra như là kết quả của người sử dụng nhấn vào nút hành động hay thông báo được gửi đến already- chạy ứng dụng bằng cách kiểm tra trạng thái ứng dụng. Trong quá trình triển khai phương thức application:didReceiveRemoteNotification: hoặc application:didReceiveLocalNotification: của đại biểu, hãy nhận giá trị của thuộc tính applicationState và đánh giá nó. Nếu giá trị là UIApplicationStateInactive, người dùng đã nhấn vào nút tác vụ; nếu giá trị là UIApplicationStateActive, ứng dụng sẽ ở phía trước nhất khi nhận được thông báo.

+0

ngoại trừ việc này không xử lý trường hợp ứng dụng được khởi chạy với thông báo từ trước (hoặc thông báo nhận được khi thiết bị đang ngủ), sau đó ứng dụng được khởi chạy hoặc đưa lên nền trước bởi người dùng và sau đó người dùng kéo xuống trung tâm thông báo từ đầu màn hình và nhấp vào thông báo trước đó. Vào thời điểm sự kiện được xử lý, ứng dụng sẽ ở phía trước, ngay cả khi người dùng nhấp vào thông báo và sẽ mong đợi một số hành vi cụ thể cho ứng dụng. –

10

đặt mã này:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UILocalNotification *notification = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]; 

    if (notification) { 
     // launched from notification 
    } else { 
     // from the springboard 
    } 
} 

trong UIApplicationDelegate của bạn.

+0

Cảm ơn, hoạt động hoàn hảo! Nota cho các nhà phát triển khác: phương pháp - (BOOL) ứng dụng: (UIApplication *) ứng dụng didFinishLaunchingWithOptions: (NSDictionary *) launchOptions hoàn toàn thay thế các phương pháp tiêu chuẩn - (BOOL) ứng dụng: (UIApplication *) ứng dụng didFinishLaunching mà không hoạt động nữa khi Phương thức didFinishLaunchingWithOptions được thêm vào. –