2016-04-14 15 views
7

Tôi đang làm việc trong Ứng dụng XMPP. Khi tôi chấm dứt và giết Ứng dụng của tôi hơn,Ứng dụng XMPP chấm dứt và không lặp lại tin nhắn

1) Người dùng không được kết nối trong XMPP Server. Người dùng đang ngoại tuyến. Nhưng tôi muốn người dùng được kết nối và trực tuyến. Giống như Whats App (Ứng dụng).

2) Tôi không thể nhận được bất kỳ tin nhắn Từ XMPP Server Side tại thời điểm đó,

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 

phương pháp này không được gọi. Vì vậy, Làm thế nào tôi có thể nhận được tin nhắn?

Và tôi cũng thực hiện Pushnotification nhưng trong cùng một cách vấn đề này Giống như, Khi ứng dụng được Giết và Chấm dứt hơn, phương pháp này không được gọi,

- (void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 

Vì vậy, xin vui lòng hướng dẫn tôi trong Way đúng và Suggest tôi như thế nào để làm việc giống như Ứng dụng Whats (Ứng dụng).

Ngoài ra, chúng tôi không thể đặt cờ VOIP trong tệp .plist Bởi vì cách này không phù hợp và bị từ chối bởi quả táo.

Mục tiêu của tôi chỉ là công việc thông báo Giống như ứng dụng Whats.

Trả lời

2

Trước hết, Nếu ứng dụng của bạn bị chấm dứt sau đó bạn sẽ nhận được Push Notification dữ liệu trong

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

trong launchOptions điển với phím

if (launchOptions) 
    { 
     if ([launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) 
     { 
     // Your code 
     } 
    } 

Thứ hai, bạn có thể sử dụng nền lấy để lấy thông điệp của người sử dụng , Trong khi tìm nạp nền, bạn có thể kết nối luồng của mình và tìm nạp thư từ máy chủ XMPP.

LƯU Ý: Phiên bản WhatsApp (iOS), tìm nạp thư ngay khi bạn mở ứng dụng, ứng dụng đang kết nối với luồng và sau đó tìm nạp thư.

Tuy nhiên, bạn có thể triển khai logic của riêng mình để tùy chỉnh chức năng của mình.

2

Kiểm tra điều này link và đọc phần Remote Notifications (iOS 7 and Greater) kết hợp Background Modes and Remote notifications để tải xuống nội dung trước khi khởi chạy ứng dụng.

Bạn sẽ nhận được ý tưởng và bạn có thể thực hiện bằng ngôn ngữ ưa thích của mình obj-c hoặc nhanh chóng.

2

Đọc tài liệu sau sẽ giúp bạn. http://xmpp.org/extensions/xep-0168.html

Chúng tôi định nghĩa để thêm ưu tiên khi sự hiện diện của người sử dụng được thiết lập như sau:

-(void)GoOnline{ 

XMPPPresence *goOnline = [XMPPPresence presence]; 
NSXMLElement *priority = [NSXMLElement elementWithName:@"priority" stringValue:@"-1"]; 
[goOnline addChild:priority]; 
[xmppStream sendElement:goOnline]; 
} 

Bây giờ để biết thêm về ưu tiên, đó là vai trò và cách thức hoạt động, đọc tài liệu từ trên cao liên kết.

Hy vọng nó có thể giúp bạn :)

5

1) tài khoản không được kết nối Trong XMPP Server. Người dùng đang ngoại tuyến. Nhưng tôi muốn Người dùng được kết nối và trực tuyến. Giống như Whats App (Ứng dụng).

Khi bạn đóng hoặc giảm thiểu WhatsApp người dùng sẽ ngoại tuyến (thử nghiệm trên iPhone4) và thư nhận được ở trạng thái này là thông báo đẩy.

2) Tôi không thể nhận được bất kỳ tin nhắn Từ XMPP Server Side tại thời điểm đó,

  • (void) xmppStream: (XMPPStream *) người gửi didReceiveMessage: (XMPPMessage *) nhắn

Phương thức này chỉ được gọi khi ứng dụng đang hoạt động. Vì vậy, bạn không thể nhận được tin nhắn ở đây sau khi bạn đã giết ứng dụng của mình.

- (void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 

Phương pháp này sẽ được gọi trong các tình huống sau đây

  1. Nếu ứng dụng của bạn đang hoạt động và bạn có bất kỳ thông báo đẩy mới.
  2. Nếu ứng dụng của bạn ở chế độ nền hoặc bị giết hoặc không khởi động thì hệ thống sẽ chỉ hiển thị thông báo trên thanh trên cùng, sau khi người dùng nhấn vào thông báo, nó sẽ mở ứng dụng của bạn và sau đó phương thức sẽ được gọi.

Và tất nhiên bạn không thể sử dụng VOIP.

WhatsApp hiển thị thông báo tùy chỉnh khi người dùng đang hoạt động trong WhatsApp. Bạn cần gửi thông báo đẩy cho mọi thư trong cuộc trò chuyện của bạn. Trong trường hợp này

  1. Nếu người dùng đang hoạt động thì hiển thị thông báo tùy chỉnh của bạn trong ứng dụng.
  2. Nếu người dùng không hoạt động (ví dụ: bị giết hoặc giảm thiểu ứng dụng) thì hệ thống sẽ hiển thị Thông báo trong trung tâm thông báo.

Khi dùng chạm vào thông báo, hệ thống sẽ khởi động ứng dụng, và bạn phải kiểm tra các điều kiện ứng dụng khởi động (từ đó ứng dụng nguồn phóng) và theo điều kiện join máy chủ/trò chuyện (hoặc nhóm nếu bạn đang sử dụng trò chuyện theo nhóm).

Khi bạn đã tham gia máy chủ với tên/biệt hiệu của mình, bạn sẽ nhận được các cuộc trò chuyện gần đây. Bạn cũng có thể nhận được lịch sử, bạn cần chỉ định khi tham gia vào máy chủ/nhóm trò chuyện.

Đảm bảo bạn đang ngắt kết nối khỏi máy chủ và cũng khỏi nhóm khi ứng dụng của bạn bị thu nhỏ hoặc bị giết. Sử dụng các phương pháp sau đây để ngắt kết nối và/hoặc các thay đổi có liên quan

1. - (void)applicationDidEnterBackground:(UIApplication *)application 
2. - (void)applicationWillTerminate:(UIApplication *)application 

Hy vọng điều này sẽ giúp bạn, tôi đã thực hiện tương tự để đạt được kết quả mong đợi như WhatsApp.

4

Khi ứng dụng của bạn tiêu diệt, thời gian đó XMPP hủy kích hoạt tất cả dịch vụ. Do đó, bạn có thể gửi dịch vụ web đến máy chủ có thể thông báo - bạn đang ngoại tuyến.

Sau đó, sau khi máy chủ có thể gửi cho bạn thông báo Đẩy tất cả nội dung trò chuyện.

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