测试已测试 | ✓ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2017年8月 |
由 Jesse Bounds,Michael Arthur 维护。
依赖 | |
SocketRocket | = 0.4.1 |
M13OrderedDictionary | >= 0 |
将您的用 Objective-C 或 Swift 编写的 iOS/OSX 应用连接到使用 Meteor 创建的 DDP 协议进行通信的服务器应用,并且如果您的服务器需要的话,对其进行身份验证。
Note:
supports meteor 0.8.2 and above.
If you need to migrate please see the srp-upgrade-support branch
这不支持,所以如果它吃了你的猫或破坏了任何数据,请不要哭泣!
(void)logonWithOAuthAccessToken: (NSString *)accessToken serviceName: (NSString *) serviceName responseCallback: (MeteorClientMethodCallback)responseCallback;
请要求您的 meteor 服务器使用以下项目,以便此功能能够工作。
https://github.com/jasper-lu/facebook-ddp
希望 meteor 会在未来原生支持此功能 https://github.com/meteor/meteor/pull/3515
ObjectiveDDP 应该能在使用 ARC 和 iOS 7.1 或以上版本的 iOS 项目中运行良好。请参阅 示例应用 和 项目维基 获取更多信息。以下是预览:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.meteorClient = [[MeteorClient alloc] init];
[self.meteorClient addSubscription:@"awesome_server_mongo_collection"];
ObjectiveDDP *ddp = [[ObjectiveDDP alloc] initWithURLString:@"wss://awesomeapp.meteor.com/websocket" delegate:self.meteorClient];
self.meteorClient.ddp = ddp;
[self.meteorClient.ddp connectWebSocket];
}
[self.meteor signupWithUsername:self.username.text password:self.password.text fullname:self.fullname responseCallback:^(NSDictionary *response, NSError *error) {
if (error) {
[self handleFailedAuth:error];
return;
}
[self handleSuccessfulAuth];
}];
或使用电子邮件
[self.meteor signupWithEmail:self.email.text password:self.password.text fullname:self.fullname.text responseCallback:^(NSDictionary *response, NSError *error) {
if (error) {
[self handleFailedAuth:error];
return;
}
[self handleSuccessfulAuth];
}];
或使用两者
[self.meteor signupWithUsernameAndEmail:self.username.text email:self.email.text password:self.password.text fullname:self.fullname.text responseCallback:^(NSDictionary *response, NSError *error) {
if (error) {
[self handleFailedAuth:error];
return;
}
[self handleSuccessfulAuth];
}];
[self.meteor logonWithUsername:self.username.text password:self.password.text responseCallback:^(NSDictionary *response, NSError *error) {
if (error) {
[self handleFailedAuth:error];
return;
}
[self handleSuccessfulAuth];
}];
或使用电子邮件
[self.meteor logonWithEmail:self.email.text password:self.password.text responseCallback:^(NSDictionary *response, NSError *error) {
if (error) {
[self handleFailedAuth:error];
return;
}
[self handleSuccessfulAuth];
}];
或者如果您接受两种方式:
[self.meteor logonWithUsernameOrEmail:self.usernameOrEmail.text password:self.password.text responseCallback:^(NSDictionary *response, NSError *error) {
if (error) {
[self handleFailedAuth:error];
return;
}
[self handleSuccessfulAuth];
}];
[self.meteor callMethodName:@"sayHelloTo" parameters:@[self.username.text] responseCallback:^(NSDictionary *response, NSError *error) {
NSString *message = response[@"result"];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Meteor Todos"
message:message
delegate:nil
cancelButtonTitle:@"Great"
otherButtonTitles:nil];
[alert show];
}];
- (void)viewWillAppear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didReceiveAddedUpdate:)
name:@"awesome_server_mongo_collection_added"
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didReceiveRemovedUpdate:)
name:@"awesome_server_mongo_collection_removed"
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didReceiveChangeUpdate:)
name:@"awesome_server_mongo_collection_changed"
object:nil];
}
NSString *message = @"I am the walrus";
NSString *anId = [[NSUUID UUID] UUIDString];
NSArray *parameters = @[@{@"_id": anId,
@"msg": message,
@"owner": self.userId,
@"info": self.importantInformation}];
// add a document
[self.meteor callMethodName:@"/awesome_server_mongo_collection/insert"
parameters:parameters
responseCallback:nil];
// then remove it
[self.meteor callMethodName:@"/awesome_server_mongo_collection/remove"
parameters:@[@{@"_id": anId}]
responseCallback:nil];
客户端连接就绪通知 - 当服务器响应接受 DDP 协议版本进行通信时,在此之前您无法调用任何与 meteor 的方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reportConnection) name:MeteorClientDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reportConnectionReady) name:MeteorClientConnectionReadyNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reportDisconnection) name:MeteorClientDidDisconnectNotification object:nil];