85 lines
3.2 KiB
Objective-C
85 lines
3.2 KiB
Objective-C
//
|
||
// NTESDemoService.m
|
||
// NIM
|
||
//
|
||
// Created by amao on 1/20/16.
|
||
// Copyright © 2016 Netease. All rights reserved.
|
||
//
|
||
|
||
#import "NTESDemoService.h"
|
||
|
||
@implementation NTESDemoService
|
||
+ (instancetype)sharedService
|
||
{
|
||
static id instance = nil;
|
||
static dispatch_once_t onceToken;
|
||
dispatch_once(&onceToken, ^{
|
||
instance = [[[self class] alloc] init];
|
||
});
|
||
return instance;
|
||
}
|
||
|
||
|
||
- (void)registerUser:(NTESRegisterData *)data
|
||
completion:(NTESRegisterHandler)completion
|
||
{
|
||
NTESDemoRegisterTask *task = [[NTESDemoRegisterTask alloc] init];
|
||
task.data = data;
|
||
task.handler = completion;
|
||
[self runTask:task];
|
||
}
|
||
|
||
- (void)fetchDemoChatrooms:(NTESChatroomListHandler)completion
|
||
{
|
||
NTESDemoFetchChatroomTask *task = [[NTESDemoFetchChatroomTask alloc] init];
|
||
task.handler = completion;
|
||
[self runTask:task];
|
||
}
|
||
|
||
|
||
- (void)runTask:(id<NTESDemoServiceTask>)task
|
||
{
|
||
if ([[NIMSDK sharedSDK] isUsingDemoAppKey])
|
||
{
|
||
NSURLRequest *request = [task taskRequest];
|
||
[NSURLConnection sendAsynchronousRequest:request
|
||
queue:[NSOperationQueue mainQueue]
|
||
completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
|
||
id jsonObject = nil;
|
||
NSError *error = connectionError;
|
||
if (connectionError == nil &&
|
||
[response isKindOfClass:[NSHTTPURLResponse class]] &&
|
||
[(NSHTTPURLResponse *)response statusCode] == 200)
|
||
{
|
||
if (data)
|
||
{
|
||
jsonObject = [NSJSONSerialization JSONObjectWithData:data
|
||
options:0
|
||
error:&error];
|
||
}
|
||
else
|
||
{
|
||
error = [NSError errorWithDomain:@"ntes domain"
|
||
code:-1
|
||
userInfo:@{@"description" : @"invalid data"}];
|
||
|
||
}
|
||
}
|
||
|
||
|
||
[task onGetResponse:jsonObject
|
||
error:error];
|
||
|
||
}];
|
||
}
|
||
else
|
||
{
|
||
//Demo Service中我们模拟了APP服务器所应该实现的部分功能,上层开发需要构建相应的APP服务器,而不是直接使用我们的DEMO服务器
|
||
[task onGetResponse:nil
|
||
error:[NSError errorWithDomain:@"ntes domain"
|
||
code:-1
|
||
userInfo:@{@"description" : @"use your own app server"}]];
|
||
}
|
||
}
|
||
@end
|