我已经使用RollingLogFileAppender和SmtpAppender配置了log4net,目的是将DEBUG级别记录到RollingLogFileAppender,并将FATAL记录到SmtpAppender:
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="test@test.com" />
<from value="test@test.com" />
<subject value="Fatal Error" />
<smtpHost value="smtp.test.com" />
<SMTPPort value="366"/>
<Username value="test@test.com"/>
<Password value="password"/>
<bufferSize value="1" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="FATAL"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="SmtpAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)
这完全有效,直到我增加bufferSize.当我这样做时,所有级别都通过电子邮件发送,log4net.Core.LevelEvaluator似乎被忽略.我也尝试过使用LevelRangeFilter和LevelMatchFilter但是这些配置似乎根本没有收到任何电子邮件.
在Android开发中,我使用ProgressDialog给我一个带有'spinny'的对话框,一些文本和一个取消按钮.除非用户取消对话框,否则我将使用此结合CountdownTimer在10秒后执行操作.
我已经在iOS中搜索过等效的内容,例如开源SVProgressHUD和MBProgressHUD,但似乎没有人支持添加按钮.
我是否必须自己编写,或者有人知道实现这一目标的简单方法吗?
我在这里跟踪了样本
https://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample
将交互式cognito登录集成到我的iOS应用程序中.这一切都运行良好,但是当在池中创建新用户时,它们最初具有FORCE_CHANGE_PASSWORD状态.
对于Android,您可以按照以下步骤
但对于iOS我无法找到如何做到这一点.使用该示例,如果我尝试以FORCE_CHANGE_PASSWORD状态登录用户,我会在控制台日志中看到以下输出(为简洁起见,删除了一些值):
{ "ChallengeName": "NEW_PASSWORD_REQUIRED", "ChallengeParameters":{ "requiredAttributes": "[]", "userAttributes": "{\" email_verified\":\" 真\"\"自定义:autoconfirm \":\ "Y \", "会话": "XYZ"}
以下是来自上面详述的示例的SignInViewController的代码.
import Foundation
import AWSCognitoIdentityProvider
class SignInViewController: UIViewController {
@IBOutlet weak var username: UITextField!
@IBOutlet weak var password: UITextField!
var passwordAuthenticationCompletion: AWSTaskCompletionSource<AWSCognitoIdentityPasswordAuthenticationDetails>?
var usernameText: String?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.password.text = nil
self.username.text = usernameText
self.navigationController?.setNavigationBarHidden(true, animated: false)
}
@IBAction func signInPressed(_ sender: AnyObject) {
if (self.username.text != nil && self.password.text != nil) {
let authDetails …Run Code Online (Sandbox Code Playgroud) 我一直在使用以下示例将cognito登录引入我的iOS应用程序:
https://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample
这工作得很好,现在我有了一个AWSCognitoIdentityUserPool对象,可以调用该currentUser()方法来访问用户。
我正在努力寻找的是如何提取AccessToken和的方法IdToken。
在android等效项中,的onSuccess方法AuthenticationHandler具有一个CognitoUserSession参数,而参数又具有getIdToken()和getAccessToken()。
令人沮丧的是,我AuthenticationResult在输出窗口中看到它们以json格式输出,但我只是不知道如何以编程方式访问它们?