资源描述
M800SDK使用手册:
1.导入M800SDK
2. Add path to project
Library Search Path添加SDK路径
3. Add libraries to project
• libc++.dylib
• libresolv.dylib
• libstdc++.6.0.9.dylib
• libxml2.dylib
• libz.dylib
• libm800sdk-2.2.0.a
4.配置info.plist
. 1 M800DeveloperKey : your developer key (supplied by M800)
. 2 M800ApplicationKey : your application key (supplied by M800)
. 3 M800ApplicationIdentifier : your application identifier (supplied by M800)
. 4 M800ApplicationVersion : 1.0.0 (default value)
. 5 M800Capabilities : incoming, outgoing (default value)
. 6 M800Expiration : 36000 (in second)
. 7 M800CarrierName : your carrier name (supplied by M800)
. 设置应用信息提供商:
. +(void)setApplicationInformationProvider:(id<M800ApplicationInfoProvider>)provider;
设置数字签名:
. +(void)setCapabilitiesSignatureProvider:(id<M800CapabilitiesSignatureProvider>)provider;
生产数字签名的例子:
//Generating Signature
+ (NSString*)genCapSigWithCapabilities:(NSString*)cap expires:(NSString*)expires
applicationSecret:(NSString*)applicationSecret
{
NSString * content = [NSString stringWithFormat:@"%@%@", cap, expires];
const char *cKey = [applicationSecret cStringUsingEncoding:NSUTF8StringEncoding];
const char *cData = [content cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH];
for (int i=0; i<CC_SHA256_DIGEST_LENGTH; i++) {
} [output appendFormat:@"%02x", cHMAC[i]];
return [NSString stringWithString:output];
}
与我们的M800服务器进行通信,使用的方法在M800SDK+ Management.h
您可以使用下面的代码注册:
[[M800SDK sharedInstance] signupWithSourceNetworkId:jid displayName:displayName
language:M800LanguageEnglish
completeBlock:^(BOOL isSuccess, NSError *error) {
if (isSuccess)
{
//Success
} else {
//Error
}];
}
服务器返回以下内容
[[M800SDK sharedInstance] bareJid];
[[M800SDK sharedInstance] prefixOfJid];
[[M800SDK sharedInstance] carrierName];
[[M800SDK sharedInstance] username];
得到它们。
用以下代码和服务器建立链接
[[M800SDK sharedInstance] connectWithCompleteBlock:^(BOOL isSuccess, NSError *error)
{ if (isSuccess){
} //TODO do some things after successful connection.
else if ([[M800SDK sharedInstance] needKickUserWithError:error]){
} //TODO Must kick current user out of app.
else {
//TODO do something when failed to connect.
}}];
检查是否需要踢出用户(是否在新设备登录或者验证失败):
[[M800SDK sharedInstance] needKickUserWithError:^(NSError* error) {
//error handling
}];
验证,添加,移除身份信息:
// Validate a phone number if needs
[[M800SDK sharedInstance] validateNumber:@"12345678" country:@"hk" language:@"zh"
validType:@"SMS" complete:^(NSString *validateCode) {
_validateCode = validateCode;
} error:^(NSError *error) {
}];
// Signup a phone number as additional identity with/without verification
[[M800SDK sharedInstance] signupAdditionIdentityWithNumber:@"12345678"
country:@"hk"
validateCode:_validateCode
smsCode:smsCodeReceived
nonVerifiedMode:NO
passiveValidation:NO
completeBlock:nil];
// Remove an existing additional identity
[[M800SDK sharedInstance] removeAdditionIdentityWithNumber:@"12345678" country:@"hk"
completeBlock:nil];
文本功能在M800SDK+ IM.h中
发送内容给JID:
[[M800SDK sharedInstance] sendMessage:@"Content" to:@"JID"];
消息发送成功回调:
- (void) didMessageSend:(NSString*) msgId;
没发送成功(消息发送失败)
- (void) didMessageSendingFailed:(NSString*) msgId;
客户端收到消息:
- (void) didServerReceived:(NSString *) msgId;
服务器收到该消息,并返回信息,回调以下方法:
- (void)didClientReceived:(NSString *) msgId;
创建群聊天室:
-(void) createRoom:(NSArray*)jids
subject:(NSString*)subject
complete:(void(^)(M800Room*))completeBlock
error:(void(^)(NSError
*))errorBlock;
聊天室添加人员:
-(void) inviteParticipants:(NSArray*) jids
toRoom:(M800Room *)room
complete:(void (^)(M800Room *))completeBlock
error:(void(^)(NSError *))errorBlock;
参与者离开聊天室:
- (void)leaveRoom:(M800Room *) room
complete:(void (^)(void))completeBlock
error:(void(^)(NSError *))errorBlock;
踢出参与者:
- (void)kickParticipant:(NSString*)jid fromRoom:(M800Room *)room complete:(void (^)(M800Room
*))completeBlock
error:(void (^)(NSError *))errorBlock;
下载群聊的聊天室列表:
-(void)queryMembershipAndCreateRoomsWithCompleteBlock:(void (^)(BOOL))completeBlock
error:(void(^)(NSError *))errorBlock;
更新聊天室成员:
- (void)queryMembershipForSingleRoom:(NSString *) roomId
completeBlock:(void (^)(BOOL))completeBlock
error:(void (^)(NSError *))errorBlock;
如果要在列表视图中显示所有的聊天室列表需要获得NSFetchedResultsController
-(NSFetchedResultsController*)roomsFetchedResultsController;
使用代理方法处理消息:
- (void) incomingMessage:(M800Message *) message inRoom:(M800Room *) room;
图片共享:
发送图片到聊天室:
UIImage * image = [UIImage imageNamed:@"M800.jpg"];
CLLocationCoordinate2D location;
M800Room * room = [[M800SDK
sharedInstance] roomWithBareJid:@"+-"];
[[M800SDK sharedInstance] sendImage:image
room:room tags:nil location:location];
你可以发送一个只出现几秒的图片?:
- (void)sendEphemeralImage:(UIImage*)image
room:(M800Room*)room
tags:(NSString*)tags
location:(CLLocationCoordinate2D)location;
语音发送:
NSURL * url = [NSURL
URLWithString:@""];
CLLocationCoordinate2D location;
M800Room* room = [[M800SDK sharedInstance]
roomWithBareJid:@"+-"];
[[M800SDK sharedInstance]
sendAudioWithFileURL:url room:room tags:tags location:location];
视频信息:
NSURL * url = [NSURL
URLWithString:@"
V"];
CLLocationCoordinate2D location;
M800Room * room = [[M800SDK sharedInstance]
roomWithBareJid:@"+-"];
[[M800SDK sharedInstance]
sendVideoWithFileURL:url room:room tags:tags location:location];
广播消息:M800SDK+IM_Broadcast.h
CLLocationCoordinate2D location;
[[M800SDK sharedInstance] sendMessage:@"text"
destUsers:@[@"user1",@"user2"]
tags:nil
withGeoLocation:location];
位置信息分享:M800SDK+IM.h & M800SDK+IM_Broadcast.h
- (void)shareLocation:(CLLocationCoordinate2D)location
message:(NSString*)message
room:(M800Room*)room
tags:(NSString*)tags;
添加语音功能:
id<M800Client> client = [M800ClientAccessor client];
[client addClientDelegate:delegate];
实现以下代理方法
- (void)clientReady:(id<M800Client>)client userInfo:(NSDictionary*)userInfo;
- (void)clientNotReady:(id<M800Client>)client reason:(NSError*)reason
userInfo:(NSDictionary*)userInfo;
打电话:
1. 生成一个唯一的呼叫ID
NSString * callID = [NSString stringWithFormat:@"m800demo-onnet-%d", (int)[NSDate
timeIntervalSinceReferenceDate]];
. 2.创建一个呼叫会话
id<M800Client> client = [M800ClientAccessor client];
id<M800OutgoingCall> call = [client createCall:@"+85212345678" display:@"display name"
. carrier:@"" userInfo:nil callID:callID enableICE:YES];
.
. 3.呼叫(拨出电话)
[call dial];
[call addCallDelegate:delegate];
.
. 拨出后处理呼叫事件
. -(void)callDial:(id<M800Call>)call;
. -(void)callEstablishing:(id<M800OutgoingCall>)call;
- (void)callProgress:(id<M800Call>)call status:(NSNumber *)code; -(void)callBeginTalking:(id<M800Call>)call;
. - (void)callTerminated:(id<M800Call>)call status:(NSNumber *)code
userInfo:(NSDictionary*)info;
接收来电:
登记远程推送服务,获取设备令牌,令牌设备上传服务器
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
//This code will upload the deviceToken to the M800 server for sending push call
notifications.
[[M800SDK sharedInstance] application:application
didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
当接收远程推送通知时,使用下面的代码来捕获
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
{
// Processing call notification
id<M800Client> client = [M800ClientAccessor client];
id<M800IncomingCall> call = [client catchRemoteNotification:userInfo];
if (call){
}
//Open customized answer call screen.
//Note: Now can add M800CallDelegate to receive call events.
[call addCallDelegate:delegate];
}
使用调用对象(id<M800IncomingCall> )接听或拒绝来电
[call answer];
// After answer, will receive events from delegate:
- (void)callAnswering:(id<M800IncomingCall>)call;
- (void)callBeginTalking:(id<M800Call>)call;
[call reject:@"reason"];
// After reject, will receive below event from delegate:
- (void)callTerminated:(id<M800Call>)call status:(NSNumber *)code
userInfo:(NSDictionary*)info;
终止呼叫:
[call hangup:@"reason"];
// After hangup, will receive the following events from the delegate:
- (void)callTerminated:(id<M800Call>)call status:(NSNumber *)code userInfo:(NSDictionary*)info;
- (void)callWillDestroy:(id<M800Call>)call;
每当有任何挂起的来电,功能
将调用type =“pendingcall”和info包含任何呼叫相关信息
- (void)incomingServerNotificationWithType:(NSString )type nameSpace:(NSString )nameSpace info:(NSDictionary *)info;
推送:
重写以下方法appdelegate.m中的
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary*)userInfo
{
[[M800SDK sharedInstance] application:application didReceiveRemoteNotification:userInfo];
}
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
{
[[M800SDK sharedInstance] application:application
didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
dome使用
14 / 14
展开阅读全文