发送消息时我正在检查对手用户是否在线/离线,所以如果他离线,我可以发给他APNS:
NSTimeInterval currentTimeInterval = [[NSDate date] timeIntervalSince1970];
NSTimeInterval userLastRequestAtTimeInterval = [[self.opponent lastRequestAt] timeIntervalSince1970];
if((currentTimeInterval - userLastRequestAtTimeInterval) > 300)
{
//SEND APNS
}
或
NSTimeInterval currentTimeInterval = ([[NSDate date] timeIntervalSince1970]);
if(currentTimeInterval - [self.opponent.lastRequestAt timeIntervalSince1970] > 300)
{
//SEND APNS
}
对手用户lastRequestAt总是返回0.000000,所以它总是发送APNS,即使对手在线也是如此。
我可以在用户名和密码登录后获取我的user.lastRequestAt。
我得到的“null”是向他发送消息时的“对手用户”最后一次请求:opponent.lastRequestAt。
self.opponent不为空,我有它的ID而不是lastRequestAt属性:
[QBUUser]:
ID:859106
created at:(null)
updated at:(null)
externalUserID:0
blobID:0
facebookID:(null)
twitterID:(null)
full name:(null)
email:(null)
login:(null)
phone:(null)
tags:(null)
lastRequestAt:(null)
website:(null)
我只是使用它的ID作为参考发送消息给对手:
QBChatMessage *message = [[QBChatMessage alloc] init];
message.recipientID = self.opponent.ID;
[[QBChat instance] sendMessage:message];
我可以在输出面板中看到有关获得对手的信息:
GET https://api.quickblox.com/users/859106.xml
headers:{
"QB-SDK" = "iOS 1.8.2";
"Qb-Token" = 41243a780d6cb457e5fe88c4cf6e4827c6f88568;
"QuickBlox-REST-API-Version" = "0.1.1";
}
在向他发送消息之前,是否有必要以其他方式获取对手的QBUser数据?
答案 0 :(得分:1)
实际上要发送消息,您只需要用户ID。但是如果要使用lastRequestAt字段,则需要从Quickblox数据库中检索QBUUser。如果您使用[QBUUser用户],您将在本地创建新用户。 Quickblox还不了解这个用户。
答案 1 :(得分:0)
您还有其他详细信息吗?
我刚在Admin面板中创建了新用户,登录了
[QBUsers logInWithUserLogin:@"garrybons" password:@"garrybons" delegate:self];
并记录结果:
2014-02-18 13:37:43.636 Snippets[66541:70b] QBUUserLogInResult, user=
[QBUUser]:
ID:875661
created at:2014-02-18 11:31:00 +0000
updated at:2014-02-18 11:31:00 +0000
externalUserID:0
blobID:0
facebookID:(null)
twitterID:(null)
full name:(null)
email:(null)
login:garrybons
phone:(null)
tags:(null)
lastRequestAt:2014-02-18 11:31:24 +0000
website:(null),
socialProviderToken=(null),
socialProviderTokenExpiresAt=(null)
如您所见,lastRequestAt!= null
请提供其他详细信息