2012-01-10 19 views
8

Mô tả vấn đề:Làm thế nào để nắm bắt ứng dụng gỡ bỏ cài đặt trên thiết bị và để cho máy chủ biết về vấn đề này (iOS/Android)

Chúng tôi có một dịch vụ trong đó có các ứng dụng cho chính điện thoại di động hệ điều hành. Chúng tôi sử dụng thông báo đẩy. Khi người dùng đăng nhập, chúng tôi lưu trữ dữ liệu ủy quyền thiết bị của bạn (cho phép nói mã thông báo) để sử dụng sau này trong dịch vụ đẩy. Vấn đề là về vài ủy quyền thiết bị cho một người dùng và giữ cho chúng hợp lệ khi người dùng gỡ cài đặt ứng dụng.

Ví dụ:

tôi đã đăng nhập với các hệ thống để một vài người, trong trường hợp để thử nó. Họ đăng nhập thông qua đám đông. ứng dụng và hệ thống tự động thêm một vài ủy quyền thiết bị vào cơ sở dữ liệu (mã thông báo). Vì vậy, bây giờ chúng tôi có N thẻ thiết bị cho 1 người dùng. Vì vậy, nếu chúng tôi gửi thông báo đẩy tất cả mọi người sẽ nhận được nó. Bây giờ, giả sử những người đã cài đặt các ứng dụng muốn gỡ cài đặt nó. Không đăng xuất, họ gỡ cài đặt ứng dụng thông qua trình quản lý ứng dụng. Và tại thời điểm này, chúng tôi KHÔNG CÓ dữ liệu VALID cho thiết bị được ủy quyền. Và nếu chúng tôi cố gắng thông báo cho họ, thông báo sẽ không được gửi đến đâu cả. Đó là sai, và làm việc vô dụng cho máy chủ. Làm thế nào để cho lõi biết rằng một số dữ liệu được lưu trữ không còn hợp lệ nữa?

Ngắn gọn - có bất kỳ khả năng nào trong Android/iOS để kích hoạt sự kiện xóa ứng dụng hay không. Nếu ứng dụng đang xóa máy chủ cuộc gọi ứng dụng để xóa dữ liệu trong bộ nhớ. Hoặc nếu ứng dụng đang mở và người dùng gỡ cài đặt nó, có kích hoạt onDestroy() kích hoạt không? Hoặc một số khác?

Tôi không phải là nhà phát triển iOS, không phải nhà phát triển Android, chỉ biết một chút về điều thứ hai và không có gì là người đầu tiên. Mọi lời khuyên sẽ được đánh giá cao. Cảm ơn trước.

+0

Mọi câu trả lời cho iOS? – devdRew

+0

ồ phải, bạn muốn biết về điều đó. nó không hoạt động tương tự nhưng cuối cùng bạn sẽ được thông báo về ứng dụng sẽ cài đặt khi đủ thông báo không thành công. đã cập nhật phản hồi. – Jens

Trả lời

2

Điều đó tùy thuộc vào dịch vụ đẩy bạn đang sử dụng. Nếu bạn đang sử dụng C2DM, hành động gỡ cài đặt ứng dụng sẽ tự động hủy đăng ký nó khỏi C2DM.

Edit:

Oh, và khoảng iOS - afaik nó không trực tiếp track gỡ bỏ cài đặt các ứng dụng, nó tuy nhiên đi kèm với một thất bại thông báo feedback dịch vụ mà sau một chuỗi các thông báo thất bại (báo cáo của thiết bị với mạng đẩy) sẽ thông báo cho bạn - cho phép bạn dọn dẹp sau khi ứng dụng đã gỡ cài đặt.

+0

Bạn nói đúng, chúng tôi đang sử dụng C2DM. Cảm ơn, hiểu rồi. Một câu hỏi về C2DM - nó có cung cấp thông báo đẩy nếu ứng dụng được đóng không? (không chạy trong nền)? – devdRew

+0

@devdRew: Có.C2DM sẽ gọi 'BroadcastReceiver' đã đăng ký của bạn ngay cả khi không có thành phần nào của ứng dụng của bạn hiện đang chạy. – CommonsWare

+1

Có, nó sẽ gửi thông báo đẩy dưới dạng Mục đích phát sóng (action = com.google.android.c2dm.intent.RECEIVE), vì vậy bạn không cần phải chạy mọi lúc. – Jens

4

Tôi không thể nói cho iOS. Bạn không thể kiểm soát được khi ứng dụng của bạn được gỡ cài đặt trong Android.

+0

Ok, đã hiểu, nhưng nếu ứng dụng đang chạy ở chế độ nền và tôi sẽ gỡ cài đặt nó, phương thức onDestroy() có được kích hoạt không? – devdRew

+0

@devdRew: Tôi sẽ không tin vào nó. Hơn nữa, ngay cả khi nó có, bạn sẽ không thể phân biệt giữa một gỡ cài đặt và bất kỳ kịch bản nào khác trong đó 'onDestroy()' của bạn sẽ được gọi. – CommonsWare

+0

Cảm ơn. Hiểu rồi. – devdRew

Các vấn đề liên quan