让我们假设Alice使用下一个代码向Bob发送订阅请求。
public bool AddBuddy(string jid) {
var roster = conn.Roster;
// 2` param is nickname
roster.CreateEntry(jid, null, null);
roster.SetSubscriptionMode(Roster.SubscriptionMode.Manual);
Presence subscribe = new Presence(Presence.Type.Subscribe);
subscribe.To = jid;
conn.SendPacket(subscribe);
}
Bob记录后,会收到一个弹出窗口,告诉您是否要在下一个方法中添加。
public void ProcessPacket (Packet p0)
{
Presence presence = p0.JavaCast<Presence> ();
var a = presence;
}
但我需要实现“稍后添加”功能。我不知道如何在服务器中保存消息以及如何接收所有消息
答案 0 :(得分:1)
您可以根据需要延迟订阅,无需在服务器上保存订阅包。并且,为了查询延迟订阅请求,只需查询名单,而不是模式both
中的订阅。
关于您的代码的一句话:Roster.createEntry(String, String, String[]
会自动发送在线状态包。无需再次发送。
答案 1 :(得分:0)
无需在服务器上保存任何内容,因为它会自动维护待处理的订阅请求,即。每当您稍后登录服务器时,订阅请求将再次推送给您(如果之前未处理过)。因此,只要您从服务器收到订阅请求时,只需将订阅请求本地保存在列表或其他内容中,并将该本地请求列表显示给用户,作为“朋友请求页面”,供用户接受/拒绝。如果应用程序的生命周期重新启动,它将再次从服务器接收所有待处理的子进程(或重新登录时)。如果这对您有用,请告诉我。