2013-09-04 25 views
7

Tôi muốn chặn một người bạn cụ thể khỏi danh sách trò chuyện của tôi với XMPP. mã hoạt động tốt. Không có ngoại lệ, nhưng tôi không thể chặn người dùng. Tôi đang sử dụng máy chủ phòng cháy mở. những gì thay đổi tôi nên thực hiện trên máy chủ?Sự cố khi chặn người dùng trong danh sách trò chuyện bằng cách sử dụng máy chủ ngăn chặn và mở lửa

Các bạn có thể có ý tưởng gì không?

Mã của tôi:

public void XMPPAddNewPrivacyList(Connection connection, String userName) { 

    String listName = "newList"; 

    // Create the list of PrivacyItem that will allow or 
    // deny some privacy aspect 

    List<PrivacyItem> privacyItems = new Vector<PrivacyItem>(); 

    PrivacyItem item = new PrivacyItem(PrivacyItem.Type.jid.toString(), 
      false, 1); 
    item.setValue(userName); 
    privacyItems.add(item); 

    // Create the new list. 

    try { 
     PrivacyListManager privacyManager = new PrivacyListManager(connection); 
     privacyManager = PrivacyListManager 
       .getInstanceFor(connection); 
     privacyManager.createPrivacyList(listName, privacyItems); 

    } catch (XMPPException e) { 
     System.out.println("PRIVACY_ERROR: " + e); 
    } 
} 
+0

hi tôi nhận PrivacyListManager.getInstanceFor (kết nối) như null. Xin hãy giúp tôi, tôi không thể hiểu tại sao nó lại trở nên vô giá trị. –

+0

Xin chào, nó hoạt động tốt trong java, nhưng tôi nhận được ngoại lệ trong asmack. Tôi biết vấn đề ở đâu, bạn có thể cho tôi người cung cấp mã danh sách riêng tư cho tôi không. –

Trả lời

0

Tôi nghĩ rằng vấn đề nên là một trong các nội dung sau:

  • userName là không đúng, ví dụ như "[email protected]".
  • Bạn không nghe những thay đổi về quyền riêng tư, ý tôi là bạn không triển khai giao diện PrivacyListListener.
  • Trong hàm tạo của PrivacyItem, bạn không nên sử dụng PrivacyRule.JID thay vì PrivacyItem.Type.jid.toString() ?.
  • Nếu bạn muốn chặn một người bạn, bạn không nên sử dụng updatePrivacyList thay vì createPrivacyList.

tôi khuyên bạn hãy nhìn gần gũi hơn với các tài liệu Smack documentation

+0

Xin chào astinx, vui lòng đăng một mã khả thi để chặn người dùng. Tôi đang gặp vấn đề với việc chặn người dùng. Tôi đang nhận được PrivacyListManager .getInstanceFor (kết nối) trả về null.Xin vui lòng giúp tôi –

+0

Xin lỗi, chúng tôi đã bị chôn vùi từ lâu trước công nghệ XMPP. Chúng tôi đang sử dụng một nút là một cách tiếp cận tốt hơn nhiều, nhanh hơn và đáng tin cậy hơn nhiều, chúng tôi đã trò chuyện với gần 2000 người dùng, XMMP không thể xử lý yêu cầu này. – 4gus71n

3

thử này ...

public boolean blockFriend(String friendName) { 

    PrivacyItem item=new PrivacyItem(PrivacyItem.Type.jid,friendName, false, 7); 
    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(connection); 
    List<PrivacyItem> list=new ArrayList<PrivacyItem>(); 
    list.add(item); 

    try { 
     privacyManager.updatePrivacyList(NEWLIST, list); 
     privacyManager.setActiveListName(NEWLIST); 
     return true; 
    } catch (SmackException.NoResponseException |XMPPException.XMPPErrorException | SmackException.NotConnectedException e) { 
     e.printStackTrace(); 
     return false; 
    } 


} 

và bỏ cấm chỉ thay false với đúng trong đối tượng của privacyitem '

0
// Here function for block user on xmpp 

    public boolean blockUser(String userName) { 

    String jid = [email protected] 
    String listName = "public"; 

    // Create the list of PrivacyItem that will allow or 
    // deny some privacy aspect 

    //ArrayList privacyItems = new ArrayList(); 

    List<PrivacyItem> privacyItems = new Vector<PrivacyItem>(); 


    PrivacyItem item = new PrivacyItem(PrivacyItem.Type.jid, jid, false, 1); 
    // item.setValue(userName); 
    item.setFilterIQ(false); 
    item.setFilterMessage(false); 
    item.setFilterPresenceIn(false); 
    item.setFilterPresenceOut(false); 

    privacyItems.add(item); 

    // Get the privacy manager for the current connection. 

    // Create the new list. 
    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(XMPPUtils.INSTANCE.connection); 


    try { 
     privacyManager.updatePrivacyList(listName, privacyItems); 
     privacyManager.setActiveListName(listName); 

     return true; 
    } catch (Exception e) { 
     Log.e("PRIVACY_ERROR: ", " " + e.toString()); 
     e.printStackTrace(); 
    } 

    return false; 
} 
0

Bảo mật là phương pháp để người dùng chặn các liên lạc từ những người dùng khác cụ thể. Trong XMPP, việc này được thực hiện bằng cách quản lý danh sách bảo mật của một người.

1 - Để thêm một danh sách mới trong máy chủ, khách hàng có thể thực hiện một cái gì đó như:



    // Create a privacy manager for the current connection._ 
    PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); 
    // Retrieve server privacy lists_ 
    PrivacyList[] lists = privacyManager.getPrivacyLists(); 

2 - Để thêm một danh sách mới trong máy chủ, khách hàng có thể thực hiện một cái gì đó như :

// Set the name of the list_ 
String listName = "newList"; 

// Create the list of PrivacyItem that will allow or deny some privacy aspect_ 
String user = "[email protected]"; 
String groupName = "enemies"; 
ArrayList privacyItems = new ArrayList(); 

PrivacyItem item = new PrivacyItem(PrivacyItem.Type.jid, user, true, 1); 
privacyItems.add(item); 

item = new PrivacyItem(PrivacyItem.Type.subscription, PrivacyItem.SUBSCRIPTION_BOTH, true, 2); 
privacyItems.add(item); 

item = new PrivacyItem(PrivacyItem.Type.group, groupName, false, 3); 
item.setFilterMessage(true); 
privacyItems.add(item); 

// Get the privacy manager for the current connection._ 
PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(myConnection); 
// Create the new list._ 
privacyManager.createPrivacyList(listName, privacyItems); 

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