gpt4 book ai didi

ios - XMPPFramework - 自动接受状态订阅请求

转载 作者:行者123 更新时间:2023-12-01 18:16:02 26 4
gpt4 key购买 nike

我认为标题足够说明问题,但故事如下:

我是 XMPPFramework 的新手对于 iOS,我想将我的客户端设置为自动接受它收到的任何订阅请求。这样其他客户端可以在请求时看到该客户端的存在状态。

根据开发者评论 XMPPRoster.h文件中,有一个在收到订阅请求时调用的方法:

/**
* Sent when a presence subscription request is received.
* That is, another user has added you to their roster,
* and is requesting permission to receive presence broadcasts that you send.
*
* The entire presence packet is provided for proper extensibility.
* You can use [presence from] to get the JID of the user who sent the request.
*
* The methods acceptPresenceSubscriptionRequestFrom: and rejectPresenceSubscriptionRequestFrom: can
* be used to respond to the request.
**/
- (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence;

但在 XMPPRoster.m 中没有实现.所以我实现它如下:
- (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence
{
[self acceptPresenceSubscriptionRequestFrom:[presence from] andAddToRoster:YES];
}

因为我是 XMPPFramework 的新手,所以我不知道我是否做错了什么,但我仍然无法让这个客户出现在其他客户中。

我也看到过类似的话题,比如 Accept buddy request in xmpp client iphoneXmpp Accepting buddy request但解决方案似乎甚至不相关!

任何建议都非常感谢。
谢谢。

最佳答案

你做错了。您不必在 XMPPRoster.m 中实现某些东西或其他库文件。
这个功能

- (void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence;

是当您的 xmpp 客户端收到在线订阅请求时触发的回调。如果你想在这个回调触发时执行一些代码,你必须实现一个名为 XMPPRosterDelegate 的协议(protocol)。 . Protocol是类似于 Java 和 C# 中的接口(interface)或 C++ 中的抽象类的功能。你必须有一个继承自 XMPPRosterDelegate 的类最后实现这个功能(如果你愿意,还可以实现其他功能)。

如果你想自动接受所有请求,你必须像这样实现你的协议(protocol)函数实现:
-(void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence{
[sender acceptPresenceSubscriptionRequestFrom:[presence from] andAddToRoster:YES];
}

roster 对象还知道谁是它的委托(delegate)人(实现 XMPPRosterDelegate 的对象),因为如果你想向某人发送消息,你必须知道两件事:目标和选择器。选择器在协议(protocol)中指定。目标是 delegate属性(property)。您必须在其初始化期间设置名册的委托(delegate)。在我的代码中,我添加了行
[xmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()];

行前
[xmppRoster            activate:xmppStream];

当然 self实现 XMPPRosterDelegate尤其是这段代码
-(void)xmppRoster:(XMPPRoster *)sender didReceivePresenceSubscriptionRequest:(XMPPPresence *)presence{
[sender acceptPresenceSubscriptionRequestFrom:[presence from] andAddToRoster:YES];
}

祝你好运,很抱歉长篇大论。

关于ios - XMPPFramework - 自动接受状态订阅请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com