AmbrosusSDK 2.0.3

AmbrosusSDK 2.0.3

ambrosus 维护。



  • ambrosus

Ambrosus iOS SDK的

AmbrosusSDK

Version License Platform

AmbrosusSDK for iOS 使iOS应用开发者能够轻松从 Ambrosus API (AMB-NET) 获取数据,并构建他们自己的用于显示资产和事件的用户界面。

  • 支持 iOS 10+
  • 支持 Objective-C 和 Swift 4.2+
  • 支持 Xcode 10.1+

集成

要开始使用 SDK,您可以在 Podfile 中添加以下内容:

pod 'AmbrosusSDK'

如果没有使用 Cocoapods,您还可以下载或克隆此仓库,然后手动导入 AmbrosusSDK,所有代码都包含在顶级“AmbrosusSDK”文件夹中。

概述

SDK 由三个主要文件组成,这些文件都包含在“AmbrosusSDK”文件夹中

AMBNetwork.swift

接口层,用于向 Ambrosus API 发送网络请求,例如获取与资产、事件和图片相关的资产和事件。

AMBDataStore.swift

一个单例缓存层,您可以使用 AMBDataStore.sharedInstance.assetStore.insert(:) 将资产插入其中,或使用 AMBDataStore.sharedInstance.eventsStore.insert(_:) 将事件插入其中。在此保存资产和事件可以方便以后获取,并在从 AMBNetwork 请求已存储的资产和事件时提高网络性能。它还会缓存使用 AMBNetwork.requestImage(_:) 调用下载的图像。

模型

定义了两个主要数据模型,AMBAssetAMBEvent,这些是构建资产和事件详情屏幕的对象。要想查看这些结构的使用示例,请参阅此存储库中包含的 AmbrosusViewer 示例项目。

AMBScanViewController.swift

内建扫描器。支持两种扫描事件和资产以及扫描私钥(登录)的扫描类型,包括所有必需的1D或2D码(符号)类型。

使用方法

要在 Swift 文件中使用 Ambrosus SDK,请首先导入它

import AmbrosusSDK

要从 API 获取资产,您可以发出以下调用

AMBNetwork.requestAsset(fromId: "0x602023f73ab25f0c95a3cf4e92c9cb2f4c9c09dbd3ca6e167d362de6e7f1eeae", completion: { asset, error in
    guard let asset = asset else {
        NSLog("asset failed to unwrap \(error ?? "")")
        return
    }
    // Use unwrapped Asset here
})

AmbrosusSDK 中的单个资产有许多与它相关的事件,要获取与资产相关联的所有事件,您可以发出以下调用

AMBNetwork.requestEvents(fromAssetId: "0x602023f73ab25f0c95a3cf4e92c9cb2f4c9c09dbd3ca6e167d362de6e7f1eeae") { events, error in
    guard let events = events else {
        NSLog("Failed to return events \(error ?? "")")
        return
    }
    // Use unwrapped events here
}

要获取与资产及其所有事件相关的资产,并将信息存储在 AMBDataStore 中,可以按以下方式操作

AMBNetwork.requestAsset(fromId: "0x602023f73ab25f0c95a3cf4e92c9cb2f4c9c09dbd3ca6e167d362de6e7f1eeae", completion: { asset, error  in
    guard let asset = asset else {
        NSLog("asset failed to unwrap \(error ?? "")")
        return
    }
    AMBDataStore.sharedInstance.assetStore.insert(asset)

    AMBNetwork.requestEvents(fromAssetId: asset.id, completion: { events, error in
        guard let events = events else {
            print("events failed to unwrap \(error ?? "")")
            return
        }
        AMBDataStore.sharedInstance.eventStore.insert(events)
    })
})

一旦资产及其事件存储在 AMBDataStore 中,就可以按照以下方式访问

let assetId = "0x602023f73ab25f0c95a3cf4e92c9cb2f4c9c09dbd3ca6e167d362de6e7f1eeae"
let asset = AMBDataStore.sharedInstance.assetStore.fetch(withAssetId: assetId)
let events = AMBDataStore.sharedInstance.eventStore.fetchEvents(forAssetId: assetId)

要创建资产和事件,您必须拥有 Ambrosus 账户并具有 create_entity 权限,并知道您的公钥和私钥。您的私钥将用于客户端签名。首先,使用您的私钥配置 AMBWeb3Manager

let privateKey = "[YOUR_PRIVATE_KEY]"
let publicKey = "[YOUR_PUBLIC_KEY]"
AMBWeb3Manager.sharedInstance.setAccount(withPrivateKey: privateKey)

私钥设置好之后,您现在可以使用 AMBNetwork 创建资产和事件

AMBNetwork.createAsset(createdBy: publicKey) { (asset, error) in
    guard let assetId = asset?.id else {
        NSLog(error ?? "Error, no Asset created")
        return
    }
    let eventData = [
        ["type": "ambrosus.asset.info",
         "name": "Organic Figs (\(Int(arc4random_uniform(300))) count)",
            "assetType": "ambrosus.assetTypes.batch",
            "images": [
                "default": ["url": "http://limitlessapps.net/images/AmberAssets/figs.png"]
            ]
        ]
    ]

    AMBNetwork.createEvent(assetId: assetId, createdBy: publicKey, data: eventData) { (event, error) in
        guard let event = event else {
            NSLog(error ?? "Error, no Event created")
            return
        }

        // Do something with unwrapped event here
        print(event.description)
    }
}

AmbrosusSDK 内置了扫描器:AMBScanViewController

要开始扫描代码,您的视图控制器需要使用 AMBScanViewControllerDelegate。扫描代码后,它将执行代理方法

func scanner(_ controller: AMBScanViewController, didCaptureCode code: String, type: String, codeResult: @escaping (Bool) -> Void) {
    // Do something with the code here
}
  • code - 扫描到的代码。
  • type - 1D或2D码的类型。
  • codeResult - 成功或出错扫描结果回调,用于重新加载扫描器(如果出现错误)。

要设置扫描器,请在 viewWillAppear 方法中添加以下内容

scanner = AMBScanViewController()
scanner?.delegate = self
scanner?.setup(with: self, scannerType: .entity)

scannerType - 有两个状态

  1. .entity - 用于扫描资产和事件。
  2. .account - 用于扫描私钥。

要移除扫描器,请在 viewWillDisappear 中添加以下内容

scanner?.delegate = nil
scanner?.stop()

使用方法(Objective-C)

Ambrosus SDK 与 Objective-C 完全兼容,您可以通过将以下内容添加到实现文件的顶部来导入 SDK

@import AmbrosusSDK;

要从 Objective-C 中获取资产及其事件并将其数据存储在 AMBDataStore 中,可以执行以下操作

NSString *assetId = @"0x602023f73ab25f0c95a3cf4e92c9cb2f4c9c09dbd3ca6e167d362de6e7f1eeae";
[AMBNetwork requestAssetFromId:assetId completion:^(AMBAsset * _Nullable asset) {
    if (!asset) {
        return;
    }
    [[[AMBDataStore sharedInstance] assetStore] insert:asset];

    [AMBNetwork requestEventsFromAssetId:assetId completion:^(NSArray<AMBEvent *> * _Nullable events) {
        if (!events) {
            return;
        }
        [[[AMBDataStore sharedInstance] eventStore] insert:events];
    }];
}];

AmbrosusBlockchainSDK

Version License Platform

AmbrosusBlockchainSDK for iOS 帮助 iOS 应用开发者轻松地在应用内部与 Ambrosus 区块链交互。

  • 支持 iOS 11+
  • 支持 Objective-C 和 Swift 4.2+
  • 支持 Xcode 10.1+

特性

  • 使用12个单词的种子短语生成 Ambrosus 区块链账户,从私钥获取地址等。
  • 使用从种子短语进行客户端签名的功能发送已签名的 Amber 令牌交易。
  • 从用户的地址获取用户的 Amber 令牌余额。

集成

要开始使用 SDK,您可以在 Podfile 中添加以下内容:

pod 'AmbrosusBlockchainSDK'
pod 'web3swift.pod', :git => 'https://github.com/bankex/web3swift.git', :branch => 'master', :modular_headers => true

如果您没有使用 Cocoapods,还可以下载或克隆此存储库,并手动导入 AmbrosusBlockchainSDK,所有的代码都包含在顶层 "AmbrosusBlockchainSDK" 文件夹中。

概览

AccountsGenerator.swift

允许创建表示区块链上个人账户的12个单词种子短语或私钥。

AmbrosusBlockchainService.swift

允许与 Amber 区块链进行通信。获取给定地址的 Amber 令牌余额,或从一位用户发送已签名的 Amber 交易到另一位用户。

用法

要在 Swift 文件中使用 Ambrosus SDK,请首先导入它

import AmbrosusBlockchainSDK

为了创建新的账户,您需要使用 AccountsGenerator 来生成您的12个单词种子短语。有了这个,您可以启动 AmbrosusBlockchainService 来获取您的 Amber 令牌余额,或通过区块链发送已签名的交易。

let service = AmbrosusBlockchainService()
// Generate a new 12 word seed phrase
guard let seedPhrase = AccountsGenerator.shared.creationSeedPhraseWord else { return }

/// Start up the Blockchain Service using the new phrase to sign
/// This service by default is set to test-net so no real Amber tokens will be spent
service.start(with: seedPhrase) {
    guard let address = service.address?.address else { return }

    // Get the balance for the newly generated account
    service.fetchAmberBalance(address: address) { (balance, error) in
        guard let balance = balance else {
            print(error ?? "Unknown error occured when fetching blockchain balance")
            return
        }
        // Unwrapped balance now available
        print(balance)
    }

    let addressB = "0x70f7A7C75f0465B8B1e9a3a0398c72f91D08F89C"

    /// Send a small amount of Amber tokens to another account
    /// - Note: Unless you replace the seed phrase created at the start with one representing an account
    /// with Amber tokens, this send will not succeed since new accounts have a 0 token balance
    service.send(amount: AmberUnits.micro.rawValue, to: addressB, from: address, callback: { (success, error) in
        guard let success = success else {
            print(error ?? "Unknown error occured when sending Amber transaction")
            return
        }
        print(success)
    })
}

示例交易

示例应用(Ambrosus查看器)

包含的示例应用,Ambrosus查看器包括一个扫描器,能够扫描一维和二维条码,并显示与资产管理相关的资产及其事件的信息。在App中,你可以使用私密密钥进行登录,创建资产和事件。它还包含了几个样本资产和事件。此外,该应用程序还包含资产详情和事件详情页面,展示了如何使用SDK构建一个具有全部功能的iOS应用程序来查看存储在AMB-NET上的数据。

Ambrosus查看器支持

  • 支持iPhone 5S及以上,iPad第五代及以上,iPod Touch第六代及以上。
  • 最低iOS版本11
  • 扫描条码需要启用摄像头权限
  • 以下条码格式的扫描能力:
    • UPCE, UPC12, EAN8, EAN13, CODE 39, CODE 128, ITF, QR, DATAMATRIX, AZTEC

样本条码

要查看Ambrosus查看器中的示例资产详情,请从应用程序扫描以下任何代码:

  EAN-8     EAN-13     QR    
  EAN-8 Sample   EAN-13 Sample   QR样本  
通用资产 根西岛母牛     布洛芬批号 200mg

账号扫描器样本

Account QR Sample

添加账号(ERC20地址:0x8536eBc067457602FfC92B89B55501b54bcf5049)