Grouper 2.2

Grouper 2.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2018年1月
SwiftSwift版本3.1

Meng Li维护。[Meng Li].



 
依赖
同步~> 4
AFNetworking~> 3
 

一个用于开发使用密钥共享和多台不可信服务器应用的框架。

简介

传统的客户端-服务器模式应用程序需要中央服务器来存储共享数据。此类移动应用的用户必须完全信任中央服务器和其应用提供商。如果中央服务器被黑客攻破,用户信息可能会被泄露,因为数据通常以明文形式存储在服务器上。当服务提供商关闭其服务时,用户可能会丢失其数据。

Grouper使用密钥共享和多台不可信服务器来解决这个问题。在Grouper中,一个设备使用密钥共享方案将一条消息分成多个份额,并将它们上传到多个不可信服务器。其他设备通过密钥共享方案下载数据并恢复份额以转换为原始消息。因此,用户数据可以得到保护。

演示

我们使用Grouper框架开发了一个名为AccountBook的演示应用程序。

安装

Grouper可以通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中:
文档

pod 'Grouper', '~> 2.1'

Grouper使用其自己的Web服务。由Java EE提供的Web服务在这里:

Grouper-Server.

Grouper是用Objective-C开发的。将头文件导入到项目中。

#import <Grouper/Grouper.h>

准备

Grouper对象包括3个子对象,它们是group(GroupManager)、sender(SenderManager)、receiver(ReceiverManager)。

Grouper依赖于Sync框架以在设备之间同步数据。因此,当您在AppDelegate中设置Core Data堆栈时,您应该使用Sync框架中提供的DataStack。

_dataStack = [[DataStack alloc] initWithModelName:@"Model"];

接下来,使用您的appId、实体、数据堆栈和主Storyboard设置Grouper。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    grouper = [Grouper sharedInstance];
    [grouper setupWithAppId:@"test-app"
                   entities:[NSArray arrayWithObjects:@"Test", nil]
                  dataStack:[self dataStack]
             mainStoryboard:storyboard];
}

属性实体是一个数组,包含所有保存在Core Data中的实体的名称。
如果一个实体A被另一个实体B引用,您需要确保在实体数组中A应在B之前

实体设计

您所有的Core Data实体应该是SyncEntity的子实体,且所有您的NSManagedObject应该是SyncEntity的子类。SyncEntity类已经由Grouper框架提供。在您的Model.xcdatamodeld文件中创建SyncEntity,并将您的实体的父实体设置为SyncEntity。

属性 类型 说明
createAt 日期 此实体的创建日期
creator 字符串 此实体的创建者
remoteID 字符串 用于同步框架的远程ID
updator 字符串 此实体的更新者
更新时间 字符串 此实体的更新日期

分组管理

Grouper在Init.storyboard中提供分组初始化相关功能,在Members.storyboard中提供成员管理。可以通过grouper.ui.groupInitgrouper.ui.members直接使用这两个storyboard。

数据同步

Grouper使用SenderManager发送数据,使用ReceiverManager接收数据。

通过grouper.sender类使用这些方法发送数据。

// Send an update message for a sync entity.
- (void)update:(NSManagedObject *)entity;

// Delete a sync entity and send a delete message.
- (void)delete:(NSManagedObject *)entity;

// Send update messages for multiple sync entities.
- (void)updateAll:(NSArray *)entities;

// Delete multiple sync entities and send delete messages.
- (void)deleteAll:(NSArray *)entities;

// Send confirm message;
- (void)confirm;

// Send resend message which contains not existed sequences to receiver.
- (void)resend:(NSArray *)sequences to:(NSString *)receiver;

通过grouper.receiver类使用此方法接收数据。

// Receive message and do something in completion block.
- (void)receiveWithCompletion:(Completion)completion;

更多信息可以在演示应用AccountBook中找到。

作者

李明,http://fczm.pw[email protected]

许可证

Grouper遵循MIT许可协议。有关更多信息,请参阅LICENSE文件。