我刚刚整理的快速示例:示例:
-(void)saveLesson {
lesson = [PFObject objectWithClassName:@"lessons"];
PFObject *photo = [PFObject objectWithClassName:@"photoslessons"];
[photo setObject:[PFUser currentUser] forKey:@"userId"];
[photo setObject:self.photoFile forKey:@"lessonimage"];
[photo setObject:self.smallPhotoFile forKey:@"smalllessonimage"];
[photo setObject:self.thumbnailFile forKey:@"thumblessonimage"];
[photo setObject:self.originalFile forKey:@"originallessonimage"];
PFACL *publicACL = [PFACL ACL];
[publicACL setPublicWriteAccess:YES];
[publicACL setPublicReadAccess:YES];
photo.ACL = publicACL;
self.photoPostBackgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:self.photoPostBackgroundTaskId];
}];
[photo saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"Photo uploaded");
NSNumber *userCount = [[NSNumber alloc] initWithInt:0];
lesson[@"textBody"] = [[[self contentView] descriptionText] text];
lesson[@"title"] = [[[self contentView] title] text];
lesson[@"likes"] = userCount;
lesson[@"times_viewed"] = userCount;
lesson[@"featured"] = @"false";
lesson[@"userId"] = [PFObject objectWithoutDataWithClassName:@"_User" objectId:[PFUser currentUser].objectId];
lesson[@"lessonimage"]= photo;
[lesson saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
PFQuery *query = [PFQuery queryWithClassName:@"activesessions"];
[query whereKey:@"teacherid" equalTo:[PFUser currentUser]];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (object!=nil) {
[object setObject:lesson forKey:@"lessonid"];
[object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
[(NSHLiveStudentProfileViewController*)self.navigationController.viewControllers[0] thisIsAHack];
[[self navigationController] popToRootViewControllerAnimated:true];
}
}];
}}];
} else if (error) {
NSString * alertTitle = @"Error Saving Lesson";
UIAlertController * alert = [UIAlertController alertControllerWithTitle:alertTitle message:@"Please make sure to include both a title and description." preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
[alert addAction:ok];
[self presentViewController:alert animated:YES completion:^{}];
}
}];
} else {
NSLog(@"Photo failed to save: %@", error);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Couldn't post your photo" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Dismiss", nil];
[alert show];
}
[[UIApplication sharedApplication] endBackgroundTask:self.photoPostBackgroundTaskId];
}];
}
所以,这是很多代码,但这是我们将要帮助您解决的问题,让我们添加一个向自己发送电子邮件的方法:
首先,下载加载 pod mailgun:
然后这样做:
Mailgun *mailgun = [Mailgun clientWithDomain:kMailGunAPIClientDomain apiKey:kMailGunAPIKey];
另外,注册一个邮枪账户,然后给自己发一封电子邮件
然后在上面的代码中,只要和对象在块中保存为“成功”,如下所示:
首先,显然改变这个:
@"Peter Pan <peterpan.notarealemailaddress@gmail.com>"
到您的邮件地址,然后填写需要您的 API 密钥的部分,以便您从 MailGun 获得,mailgun 很便宜,并且在您设置 mail gun 帐户后立即为您工作(我不为mailgun,我只是一个快乐的用户)
[lesson saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
[mailgun sendMessageTo:@"Peter Pan <peterpan.notarealemailaddress@gmail.com>"
from:@"Excited User <apeterpan.notarealemailaddress@gmail.com>>"
subject:@"Mailgun is awesome!"
body:@"and life is great!"];
轰隆隆!,
这是 MailGun 吊舱:https://github.com/rackerlabs/objc-mailgun
注册一个免费帐户:http://www.mailgun.com/
测试一下,这件事的妙处是它是自动触发的,你可以在我放在这里的电子邮件呼叫中放任何你想要的东西,你还需要获得 AFNetworking:
在这里获取:https://github.com/AFNetworking/AFNetworking
此方法不需要任何类型的 javascript 云编码,您甚至可以将电子邮件正文替换为您想要发送给自己的信息。如果您想将刚刚触发您方法的人的 USER ID 发送给自己,那么您就有了,电子邮件将被发送。
所以你有这个:
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
testObject[@"Bookmarks"] = @"Restore Successful";
[testObject saveInBackground];
改成这样:
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
testObject[@"Bookmarks"] = @"Restore Successful";
[testObject saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"successfully SAVED!");
}
}];
这是您的自定义保存功能:
-(void)customSaveFunction {
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
testObject[@"Bookmarks"] = @"Restore Successful";
[testObject saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"successfully SAVED!");
Mailgun *mailgun = [Mailgun clientWithDomain:kMailGunAPIClientDomain apiKey:kMailGunAPIKey];
[mailgun sendMessageTo:@"Peter Pan <peterpan.notarealemailaddress@gmail.com>"
from:@"Excited User <apeterpan.notarealemailaddress@gmail.com>>"
subject:@"Mailgun is awesome!"
body:@"and life is great!"];
}
}];
}
我展示了保存课程示例,您可以在电子邮件中发送多封电子邮件,其中包含多个信息以用于不同的保存触发器,但是这段代码现在对我来说没用,这仅用于主要测试目的,所以自定义保存我在这几句话上方发布的功能是您自己如何做,或者只是将相同的代码放入您的视图控制器或保存对象的任何地方。