测试测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | 商业 |
发布最后发布 | 2016年6月 |
由 Sincerely Inc,Mark Hambly,Sincerely Inc,Sincerely Inc 维护。
Sincerely 为 iOS 应用提供的 Ship SDK,让您轻松将卡片邮寄功能添加到您的 iOS 应用中。通过将其包含到项目中,您的用户将在您设置的价格下,在世界任何地方邮寄真实的卡片。这是完全自动的:只需传递一张图片,它就会在模态窗口中为您处理地址和账单。
当前版本: 2.0.5 (下载)
新特性
如何从先前的版本更新? 我们已重命名了一些文件。请参阅以下“从 1.5 版本更新”。
安装 ShipLib.framework 是一个快速且简单的过程。这可以通过手动进行,也可以通过 cocoapods 完成。
从 github 上 下载存储库
将 ShipLibResources.bundle
和 ShipLib.framework
拖动到您的项目中。
在您的应用程序 Target 的“构建阶段”标签下,在“链接二进制库”部分中,点击添加按钮并添加:AddressBook.framework,AddressBookUI.framework,SystemConfiguration.framework
就是这样。您现在就可以集成它了!
请在此处报告任何问题:https://github.com/sincerely/shiplib-ios-framework/issues
ShipLibResources.bundle
和 ShipLib.framework
拖到您的项目中。确保您将新文件添加到您的应用程序 Target 中。#import "<Sincerely/Sincerely.h>"
更改为 #import "<ShipLib/ShipLib.h>"
将 ShipLib 集成到您的应用程序中非常直接且简单。如果您遇到了问题或需要起始点,请查看我们的示例应用程序。
框架中包含三个文件。
文件 | 描述 |
---|---|
ShipLib.h | 您将其包含到项目中的文件,即 #import "<ShipLib/ShipLib.h>" |
SYConstants.h | 框架中使用的常量 |
SYSincerelyController.h | 您需要启动和展示的控制器 |
#import <ShipLib/ShipLib.h>
并像这样实现SYSincerelyControllerDelegate
协议:objective-c @interface ViewController : UIViewController <SYS sincerelyControllerDelegate> { }
创建一个SYSincerelyController(示例见下)。检查是否已创建(init未返回nil)然后以模态展示它。
SYSincerelyControllerDelegate
协议的对象(通常是self
)将打印的最后图像将为1838 x 1238(6英寸 x 4 英寸,带边距)。库将自动缩小大于此尺寸的图像,并提供裁剪功能。
SYSincerelyController *controller = [[SYSincerelyController alloc] initWithImages:[NSArray arrayWithObject:[UIImage imageNamed:@"demo_image.jpg"]]
product:SYProductTypePostcard
applicationKey:@"YOUR_APP_KEY_HERE"
delegate:self];
if (controller) {
[self presentViewController:controller animated:YES completion:NULL];
}
注意: initWithImages:product:applicationKey:delegate:
如果在给定的输入不正确的情况下将返回nil。如果然后您调用presentViewController:animated:competion:
并传递nil,则您应用程序会崩溃。
实现SYSincerelyControllerDelegate
协议以接收回调。以下是一些示例实现
- (void)sincerelyControllerDidFinish:(SYSincerelyController *)controller {
/*
* Here I know that the user made a purchase and I can do something with it
*/
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void)sincerelyControllerDidCancel:(SYSincerelyController *)controller {
/*
* Here I know that the user hit the cancel button and they want to leave the Sincerely controller
*/
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void)sincerelyControllerDidFailInitiationWithError:(NSError *)error {
/*
* Here I know that incorrect inputs were given to initWithImages:product:applicationKey:delegate;
*/
NSLog(@"Error: %@", error);
}
就这些了!请告诉我们您的想法、问题或反馈。
在整合ShipLib时,您应当密切注意将体验定制以符合您的应用程序。SYSincerelyController支持一系列属性,您可以修改这些属性以定制体验以适应应用程序。以下属性如下
一个布尔值,指示是否跳过裁剪屏幕。默认值:NO
@property (nonatomic, assign) BOOL shouldSkipCrop
讨论
如果在包含照片编辑的应用程序中包含ship库,您可能会发现跳过裁剪屏幕是有利的。将此属性设置为YES,用户将不会在订单过程中看到裁剪屏幕。如果此属性设置为YES,则在initWithImages:product:applicationKey:delegate:
中提交的图片将进行中心裁剪(使用UIViewContentModeScaleAspectFill
)并调整大小到1838 x 1238。由于此行为的特点,您应尽量提交接近1838 x 1238的图片。
声明于:SYSincerelyController.h
一个布尔值,指示是否跳过个性化屏幕。默认值:NO
@property (nonatomic, assign) BOOL shouldSkipPersonalize
讨论
将此属性设置为YES,个性化屏幕将不会在订单过程中显示。这意味着用户将无法输入消息或个人头像。但是,您仍然可以使用以下其中一个属性为他们指定一个消息或个人头像。如果设置为YES,则任何头像选择将被清除,除非在下面的profilePhoto中指定,否则卡片上不会显示个人头像。
声明于:SYSincerelyController.h
将预先填充到贺卡上的字符串值。
@property (nonatomic, copy) NSString *message
讨论
设置此属性将为贺卡的背面预先填充消息。用户仍然可以修改个性化屏幕上的消息,除非shouldSkipPersonalize设置为YES。
声明于:SYSincerelyController.h
将预先填充卡片个人照片的图像。
@property (nonatomic, retain) UIImage *个人信息照片
讨论
设置此属性将预先填充卡片背面的个人照片。用户 still 可以在个性化屏幕上编辑个人照片,除非 shouldSkipPersonalize 设置为 YES。如果您确实设置了 shouldSkipPersonalize 为 YES,您应该始终最后设置个人照片。这是因为将 shouldSkipPersonalize 设置为 YES 将清除当前所做的所有个人照片选择。
声明于:SYSincerelyController.h
将预先选择卡片接收者的字典数组。
@property (nonatomic, retain) NSArray *接收者
讨论
设置此值将预先填充接收者数组中的内容。此数组的必须遵守特定格式。数组中的每个对象必须是 NSDictionary。每个 NSDictionary 必须仅包含 NSString 作为其键和值。可能的键如下
您必须包含 4 个必需字段:name, street1, city, country,以便您的接收者能够在列表中显示。或者,对于基于美国的地址,您可以只提交 name, city 和 zipcode,我们将为您填写剩余字段。
声明于:SYSincerelyController.h
示例
NSDictionary *address1 = [NSDictionary dictionaryWithObjectsAndKeys:@"Rick Harrison", @"name",
@"800 Market St. Floor 6", @"street1",
@"94102", @"zipcode", nil];
NSDictionary *address2 = [NSDictionary dictionaryWithObjectsAndKeys:@"Matt Brezina", @"name",
@"800 Market Street Floor 6", @"street1",
@"San Francisco", @"city",
@"CA", @"state",
@"United States", @"country",
@"94102", @"zipcode", nil];
controller.recipients = [NSArray arrayWithObjects:address1, address2, nil];
jeremybrooks 创建了 PostcardUIActivity,可用于从 UIActivity 中呈现 ShipLib。如果您希望用户在点击照片时执行多种操作,这是一个不错的选择。
解决大多数问题都需要通常的 Xcode 巫术。也就是说,清理您的 Derived Data 文件夹,清理项目,重新启动 Xcode。iOS 框架还没有在 Xcode 中“正式”支持,因此有时与它们一起工作可能会有点颠簸!
-ObjC
和 -all_load
到“Other Linker Flags”(在版本 1.7 及以上可能不需要!)-ObjC
和 -all_load
到“Other Linker Flags”(在版本 1.7 及以上可能不需要!)所有付款都在ui内处理。您不需要向用户收取费用或设置SSL证书,我们将根据您向用户收取的费用的一定比例向您支付收入。美国境内打印的基础价格是0.99美元,其他地方的打印是1.99美元。对于超出此价格的部分,您将获得70%的收入;因此,如果您选择向美国收取2.99美元,国际收取3.99美元,您将每张美国卡获得1.40美元的费用($2.99 - $0.99 = $2.00 * 0.70)。当您的收入达到25美元时,我们将通过支票或PayPal支付。
如果您在启动和运行此应用程序时遇到任何问题,请随时在此处发起问题或通过[email protected]联系我们。
您可以在此处报告与框架或文档相关的任何问题。