Kindred Prints SDK 让您从应用程序中直接销售和收费打印照片变得极其容易。您只需将文件夹放入您的 iPhone 或 iPad 项目中,并通过我们的简单 SDK 接口添加照片,就可以将用户发送到结账流程。
当用户选择订购印刷品时,该图像会添加到 Kindred 购物车中。用户将被提示选择数量,并且可以最终确认只有一个印刷品的订单。但是,如果用户选择返回,他们可以继续选择其他图像以订购印刷品。每次他们添加到印刷,这些图像都会添加到 Kindred 购物车中。图像将保留在购物车中,直到用户完成购买或删除它们(退出应用程序不会从用户的购物车中删除图像)。
您可以通过发送图片URL或通过将实际图片传递到内存中来,将用户图像发送给我们添加到购物车中,不论是在手机上还是您的服务器上。我们允许开发者通过URL (KPURLImage) 或内存中(KPMEMImage)的图片导入照片。
此外,我们还可以与您合作,从您的用户创建的内容中创建自定义图片。例如,我们正在与一个烹饪应用合作,在那里我们创建用户喜欢特定菜谱时可以打印的菜谱卡片。
如果您想了解示例测试应用程序如何与SDK接口,请按照本节中的说明进行操作。SDK中所有公开可调用的函数都进行了演示。
git clone git://github.com/kindredprints/kindredprints-ios.git
双击 KindredPrints-iOS-TestBed 文件夹中的 KindredPrints-iOS-TestBed.xcodeproj
查看 TestViewController.m 并更新此行以使用您的测试Kindred App ID(通过注册获取)
static NSString *const KINDRED_APP_ID = @"YOUR_TEST_KEY_HERE";
运行项目并在测试应用程序中尝试。
在 TestViewController.m 中演示了所有公开可调用的SDK函数。
如果您只想将SDK文件夹添加到项目中
获取 KindredPrints-iOS-SDK文件夹的压缩版本,或使用测试项目文件夹中的(有关下载说明请见前文)。
将 KindredPrints-iOS-SDK文件夹拖放到Xcode中的项目中,或者通过点击 文件 -> 添加文件到 ... 来添加该文件夹。
本节演示了示例实现中使用的函数,但您的想象力可以无限延伸。
在您的应用程序中使用SDK有两种主要方式:单张照片工作流程和多张照片工作流程。
所有测试都应使用您的Kindred测试密钥进行,通过注册获得。具有测试密钥,您的订单将不会送到打印机,并且不会对信用卡进行收费。在向公众开放之前,请确保切换到实时版本,否则用户的订单将无法完成。
使用Kindred测试密钥,您可以使用号码为 4242 4242 4242 4242 的假信用卡以及任何有效的未来日期和CVV。
此类型的实现将通过单张照片吸引用户进行结账。这主要适用于主要处理单张照片编辑或优化的应用程序。
在此示例中,我们假设照片存储在本地内存中。例如,使用远程URL,请参考下面的示例中的类似方法。
在照片旁边添加一个按钮,上面写有“打印”(或您觉得合适的任何内容)。
将适当的导入添加到包含打印按钮处理器的视图控制器类的文件中
#import "KPPhotoOrderController.h"
创建一个处理按钮点击的方法,并将此代码插入其中
KPMEMImage *img = [[KPMEMImage alloc] initWithImage:(UIImage *)chosenImage];
KPPhotoOrderController *orderController = [[KPPhotoOrderController alloc] initWithKey:@"YOUR_TEST_KEY_HERE" andImages:@[img]];
[self presentViewController:orderPhotosVC animated:YES completion:nil];
如果您应用程序处理大量照片,您可能会对此示例感兴趣。比如说,你有整整一个相册的照片,你只想将其中的5-10张添加到照片打印购物车中。或者,你想给用户一种购物车体验的感觉,让他们在准备好“结账”之前单独添加照片。你可以在屏幕的右上角简单创建一个“结账”按钮,并将一个“添加到购物车”按钮放在每张照片旁边。
在此示例中,所有照片都位于远程服务器上,并且通过它们的URL传递给SDK。然后,结账流程将缓存照片以供用户显示。
将“添加到购物车”按钮添加到您的项目中,并放置在列表中的每张照片旁边
将适当的导入添加到包含打印按钮处理器的视图控制器类的文件中
#import "KPPhotoOrderController.h"
创建一个处理按钮点击的方法,并将此代码插入其中
KPPhotoOrderController *orderController = [[KPPhotoOrderController alloc] initWithKey:@"YOUR_TEST_KEY_HERE"];
KPURLImage *img = [[KPURLImage alloc] initWithOriginalUrl:@"http://site.com/img.jpg"];
[orderController addImages:@[img]];
如果除了原始照片外,您还存储了预渲染预览大小的图片的远程URL,您可以像这样初始化KPURLImage。
KPURLImage *img = [[KPURLImage alloc] initWithPreviewUrl:@"http://site.com/prevImg.jpg" andOriginalUrl:@"http://site.com/img.jpg"];
现在,在显示的某个位置添加一个写着“结账”的按钮
创建一个处理按钮点击的方法,并将此代码插入其中
KPPhotoOrderController *orderController = [[KPPhotoOrderController alloc] initWithKey:@"YOUR_TEST_KEY_HERE"];
[self presentViewController:orderController animated:YES completion:nil];
如果您希望在SDK完成后注册回调,只需将您的类注册为KPPhotoOrderControllerDelegate。为此,请按照以下说明操作
通过将其放在接口声明旁边来将您的类注册为KPPhotoOrderControllerDelegate。示例可以在我们的TestProject中找到,如下所示
@interface TestViewController () <KPPhotoOrderControllerDelegate>
按照如下方式添加对可选委托函数的响应
- (void)userDidCompleteOrder:(KPPhotoOrderController *)orderController {
NSLog(@"USER DID COMPLETE ORDER");
}
- (void)userDidClickCancel:(KPPhotoOrderController *)orderController {
NSLog(@"USER DID RETURN TO APP");
}
在向用户呈现KPPhotoOrderController实例之前,将其分配给委托。如这里所示
KPMEMImage *img = [[KPMEMImage alloc] initWithImage:(UIImage *)chosenImage];
KPPhotoOrderController *orderController = [[KPPhotoOrderController alloc] initWithKey:@"YOUR_TEST_KEY_HERE" andImages:@[img]];
orderController.delegate = self;
[self presentViewController:orderPhotosVC animated:YES completion:nil];
出于多种原因,包括确认订单、在快递订单时通知他们,以及在订单出现问题时联系他们,我们要求用户输入电子邮件地址。
但是,要求用户手动输入电子邮件地址可能会降低转化率。如果您已经知道用户的电子邮件地址,您可以将其传递,使他们不需要手动输入。
KPPhotoOrderController *orderPhotosVC = [[KPPhotoOrderController alloc] initWithKey:@"YOUR_TEST_KEY_HERE"];
[orderPhotosVC preRegisterUserWithEmail:(NSString *)userEmail];
如果您还知道用户的姓名,如果您调用此函数,我们可以为我们提供个性化的电子邮件,以获得更好的体验。
KPPhotoOrderController *orderPhotosVC = [[KPPhotoOrderController alloc] initWithKey:@"YOUR_TEST_KEY_HERE"];
[orderPhotosVC preRegisterUserWithEmail:(NSString *)userEmail andName:(NSString *)userName];