ShipLib 2.0.5

ShipLib 2.0.5

测试测试
Lang语言 Obj-CObjective C
许可证 商业
发布最后发布2016年6月

Sincerely IncMark HamblySincerely IncSincerely Inc 维护。



ShipLib 2.0.5

  • Sincerely

ShipLib iOS SDK

Sincerely 为 iOS 应用提供的 Ship SDK,让您轻松将卡片邮寄功能添加到您的 iOS 应用中。通过将其包含到项目中,您的用户将在您设置的价格下,在世界任何地方邮寄真实的卡片。这是完全自动的:只需传递一张图片,它就会在模态窗口中为您处理地址和账单。

当前版本: 2.0.5 (下载)

新特性

  • 修复了各种布局和导航问题

如何从先前的版本更新? 我们已重命名了一些文件。请参阅以下“从 1.5 版本更新”。

安装

安装 ShipLib.framework 是一个快速且简单的过程。这可以通过手动进行,也可以通过 cocoapods 完成。

手动安装

  1. 从 github 上 下载存储库

  2. ShipLibResources.bundleShipLib.framework 拖动到您的项目中。

  3. 在您的应用程序 Target 的“构建阶段”标签下,在“链接二进制库”部分中,点击添加按钮并添加:AddressBook.frameworkAddressBookUI.frameworkSystemConfiguration.framework

  4. 就是这样。您现在就可以集成它了!

请在此处报告任何问题:https://github.com/sincerely/shiplib-ios-framework/issues

从 1.5 及以下版本更新

  • 删除 Sincerely.framework 和相关资源
  • ShipLibResources.bundleShipLib.framework 拖到您的项目中。确保您将新文件添加到您的应用程序 Target 中。
  • #import "<Sincerely/Sincerely.h>" 更改为 #import "<ShipLib/ShipLib.h>"

集成

将 ShipLib 集成到您的应用程序中非常直接且简单。如果您遇到了问题或需要起始点,请查看我们的示例应用程序

框架中包含三个文件。

文件 描述
ShipLib.h 您将其包含到项目中的文件,即 #import "<ShipLib/ShipLib.h>"
SYConstants.h 框架中使用的常量
SYSincerelyController.h 您需要启动和展示的控制器
  1. 选择用户将启动ShipLib模态的位置。一个例子可能是为UIButton触摸选择器。在这个控制器的头文件中添加#import <ShipLib/ShipLib.h>并像这样实现SYSincerelyControllerDelegate协议:objective-c @interface ViewController : UIViewController <SYS sincerelyControllerDelegate> { }
  2. 创建一个SYSincerelyController(示例见下)。检查是否已创建(init未返回nil)然后以模态展示它。

    • 图片数组:一个只包含 UIKit对象的NSArray。数组中UIKit对象的数量必须与产品类型要求的一致。
    • 产品类型:目前,您只能传入SYProductTypePostcard产品类型。此类型要求图片数组中只有一个UIImage。
    • 应用密钥:从开发者门户生成的应用密钥
    • 委托:任何符合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,则您应用程序会崩溃。

  3. 实现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);
    } 
  4. 就这些了!请告诉我们您的想法、问题或反馈。

定制

在整合ShipLib时,您应当密切注意将体验定制以符合您的应用程序。SYSincerelyController支持一系列属性,您可以修改这些属性以定制体验以适应应用程序。以下属性如下

shouldSkipCrop

一个布尔值,指示是否跳过裁剪屏幕。默认值:NO

@property (nonatomic, assign) BOOL shouldSkipCrop

讨论

如果在包含照片编辑的应用程序中包含ship库,您可能会发现跳过裁剪屏幕是有利的。将此属性设置为YES,用户将不会在订单过程中看到裁剪屏幕。如果此属性设置为YES,则在initWithImages:product:applicationKey:delegate:中提交的图片将进行中心裁剪(使用UIViewContentModeScaleAspectFill)并调整大小到1838 x 1238。由于此行为的特点,您应尽量提交接近1838 x 1238的图片。

声明于:SYSincerelyController.h

shouldSkipPersonalize

一个布尔值,指示是否跳过个性化屏幕。默认值:NO

@property (nonatomic, assign) BOOL shouldSkipPersonalize

讨论

将此属性设置为YES,个性化屏幕将不会在订单过程中显示。这意味着用户将无法输入消息或个人头像。但是,您仍然可以使用以下其中一个属性为他们指定一个消息或个人头像。如果设置为YES,则任何头像选择将被清除,除非在下面的profilePhoto中指定,否则卡片上不会显示个人头像。

声明于:SYSincerelyController.h

message

将预先填充到贺卡上的字符串值。

@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 作为其键和值。可能的键如下

  • name
  • street1
  • street2
  • city
  • state
  • zipcode
  • country

您必须包含 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];

UIActivityView 支持情况

jeremybrooks 创建了 PostcardUIActivity,可用于从 UIActivity 中呈现 ShipLib。如果您希望用户在点击照片时执行多种操作,这是一个不错的选择。

安装故障排除

解决大多数问题都需要通常的 Xcode 巫术。也就是说,清理您的 Derived Data 文件夹,清理项目,重新启动 Xcode。iOS 框架还没有在 Xcode 中“正式”支持,因此有时与它们一起工作可能会有点颠簸!

手动安装

  1. 找不到 ShipLib/ShipLib.h 文件:
    • 如果您最近升级并且 ShipLib.framework 的路径已更改,请确保您已完全删除旧框架。有时 Xcode 将保留项目搜索路径中的目录,这可能会引起此错误。
    • 确保您的“Framework Search Paths”包括您放置 ShipLib 文件夹的目录根
    • 确保您在目标的“Build Settings”中添加了 -ObjC-all_load 到“Other Linker Flags”(在版本 1.7 及以上可能不需要!)
  2. 我的卡片边缘有时在打印时被裁剪。:卡片是在大张纸上制作然后裁剪到尺寸的。这个过程是由计算机控制的,非常准确,但由于在物理领域工作需要考虑公差,因此非常重要。因此,在您的图像中包含一些额外的空间(我们的行业称之为“出血区域”)以确保所有卡片在制作时都看起来很好。也就是说,使您的边缘稍微大一些(1/10 英寸)比屏幕上的要大,不要将任何重要元素(文本等)放在边缘附近。
  3. 错误:无法在包中加载 NIB:
    • 确保您的项目中目标的“Build Phases”标签下“Link Binary With Libraries”下有 ShipLib.framework
    • 确保您在目标的“Build Settings”中添加了 -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]联系我们。

发现了错误?

您可以在此报告与框架或文档相关的任何问题。