xmpp 帶內註冊

2021-06-19 06:47:28 字數 1694 閱讀 9164

xmpp 帶內註冊

1 帶內註冊(in-band registration)的概念

帶內註冊指的是未在你的伺服器上開通賬號的使用者可以通過xmpp協議註冊新賬號。相反的概念是帶外註冊(out-of-band registration),例如

你必須到某個指定的web頁面進行註冊。

如果伺服器允許帶內註冊,那麼我們就可以通過自己開發的客戶端註冊新賬號。與帶內註冊相關的協議是xep-0077。

2 使用xmppframework進行帶內註冊

xmppstream.h中宣告了進行簡單帶內註冊(提供使用者名稱和密碼進行註冊)的函式

- (bool)registerwithpassword:(nsstring *)password error:(nserror **)errptr;

註冊前需要先建立stream連線, 因為沒有帳號,所以需要建立匿名連線

nserror *err; 

nsstring *tjid = [[nsstring alloc] initwithformat:@"

anonymous@%@

", server.text];

[[delegate

xmppstream] setmyjid:[xmppjid jidwithstring:tjid]];

if ( ![[delegate xmppstream] connect:&err])

建立連線之後, 不需要進行使用者驗證, 可以如下處理 -- 如果是在註冊,則跳過驗證這一步

- (void)xmppstreamdidconnect:(xmppstream *)sender

}

xmppstream connect 是立即返回的, 所以connect返回並不能說明連線已經建立好.

[delegate xmppstream] isconnected 為yes時才能確定連線已經建立好.

連線建立好之後,我們就可以發註冊資訊

nsstring *jid = [[nsstring alloc] initwithformat:@"

%@@%@

", user.text, server.text];

[[delegate

xmppstream] setmyjid:[xmppjid jidwithstring:jid]];

nserror *error=nil;

if (![[delegate xmppstream] registerwithpassword:password.text error:&error])

registerwithpassword:error 方法也是立即返回的

需要通過**方法來判斷註冊是否成功

註冊成功會呼叫:- (void)xmppstreamdidregister:(xmppstream *)sender

註冊失敗會呼叫:- (void)xmppstream:(xmppstream *)sender didnotregister:(nsxmlelement *)error

- (void)xmppstreamdidregister:(xmppstream *)sender

- (void)xmppstream:(xmppstream *)sender didnotregister:(nsxmlelement *)error

xmpp 登入註冊小結

pragma mark xmpp相關的屬性和方法定義 全域性xmppstream,唯讀屬性 property strong,nonatomic,readonly xmppstream xmppstream 通知伺服器使用者上線 void gooneline 通知伺服器使用者下線 void gooff...

帶外管理和帶內管理

帶外管理和帶內管理 2007 10 29 22 09 06 標籤 休閒 帶外帶內 職場帶外管理是新一代網路管理技術的簡稱。網路管理又分為帶內管理 in band 和帶外管理 out of band 目前我們使用的網路管理手段基本上都是帶內管理,即管理控制資訊與資料資訊使用統一物理通道進行傳送。例如 ...

XMPP協議的使用 註冊,登陸,登出

authenticatewithpasswor方法登陸即可 inte ce xmpptool xmpp核心類 property nonatomic,strong xmppstream stream property nonatomic,copy resultblock resultblock end...