如何在Objective-C中设置Amazon Amplify iOS?
仅显示Swift代码。当尝试使用Objective-C时,我无法访问任何放大库。我是否缺少安装步骤如何在Objective-C中设置Amazon Amplify iOS?,ios,amazon-web-services,aws-amplify,Ios,Amazon Web Services,Aws Amplify,仅显示Swift代码。当尝试使用Objective-C时,我无法访问任何放大库。我是否缺少安装步骤 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { do { try Amplify.add(plugin: AWSCognitoAuthPlugin(
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
do {
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.add(plugin: AWSPinpointAnalyticsPlugin())
try Amplify.configure()
print("Amplify configured with Auth and Analytics plugins")
} catch {
print("Failed to initialize Amplify with \(error)")
}
return true
}
如何在Objective-C中进行等效
我是否缺少安装步骤
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
do {
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.add(plugin: AWSPinpointAnalyticsPlugin())
try Amplify.configure()
print("Amplify configured with Auth and Analytics plugins")
} catch {
print("Failed to initialize Amplify with \(error)")
}
return true
你没有遗漏任何东西。不幸的是,在Amplify for iOS上没有Objective-C支持。Amplify是在Swift中使用其全部功能构建的,除非社区有强烈的需求,否则目前不考虑使用Objective-C支持
出于好奇:您是否正在Objective-C中启动一个新应用程序?如果是这样的话,我会好奇地想知道,鉴于苹果最近在Swift上的投资(联合收割机、SwiftUI、Swift语言更新等),为什么不选择Swift
如果您正试图将Amplify集成到现有的Objective-C应用程序中,那么恐怕这是不可能的。是的,陈旧的Objective-C应用程序仍然存在。它们必须得到维护。期望开发人员用Swift重写它们以便使用AMPLYPT,这真的是不合理的。最近,我被要求在2015年初Swift出现之前,将Amplify添加到一个应用程序中。(天哪,真的有超过5年的应用程序吗?!) 幸运的是,如果您能够咬紧牙关,为您的Objective C项目添加Swift支持,那么创建一个从Objective C使用的Swift包装器类就不难了。如果亚马逊的高薪员工能用这样的例子帮助我们,那就太好了
import Amplify
import AmplifyPlugins
@objc
class AmplifyWrapper: NSObject {
override init() {
super.init()
}
@objc
public func initialize() {
do {
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.add(plugin: AWSPinpointAnalyticsPlugin())
try Amplify.configure()
print("Amplify configured with Auth and Analytics plugins")
} catch {
print("Failed to initialize Amplify with \(error)")
}
}
@objc
public func recordEvent(name: String, category: String, accountId: String) {
let properties: AnalyticsProperties = [ "category": category, "accountId": accountId]
let event = BasicAnalyticsEvent(name: name, properties: properties)
Amplify.Analytics.record(event: event)
}
}
使用如下形式的目标C:
#import "PutYourAppNameHere-Swift.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[[AmplifyWrapper alloc] init] initialize];
...
}
之后,您可以执行以下操作:
[[[AmplifyWrapper alloc] init] recordEventWithName:@"App Opened" category:@"Counts" accountId:""];
我正在将Amplify集成到现有的应用程序中。谢谢你的快速回复。我还必须在一个客观的C应用程序中添加Amplify。我添加了一个备选答案和一个如何实现的示例。如果您仍然需要这样做,我添加了一个答案,说明如何使用Swift包装器将其暴露给Objective C。