关于Facebook SDK for iOS的快速问题.我正在尝试为用户实现该功能,以授予我的应用程序访问扩展权限的权限.
当用户接受扩展的权限请求(从用户被重定向到的Facebook iOS应用程序)时,代码工作正常,但我无法检测用户何时返回应用程序而未接受权限,或单击取消然后回到应用程序.
如果我点击"取消"并多任务回到应用程序,则没有任何记录,屏幕上也没有显示任何内容.当我再次尝试重新授权时,Facebook SDK会抛出异常:
FBSession:在先前的重新授权呼叫尚未完成时重新授权无效.
虽然我可以捕获异常,但它仍然没有帮助,因为我无法弄清楚如何停止前一个调用,以便允许用户再次尝试重新授权.
这是我目前正在使用的代码:
@try {
[[FBSession activeSession] reauthorizeWithPermissions:[self requiredPermissions]
behavior:FBSessionLoginBehaviorWithFallbackToWebView
completionHandler:^(FBSession *session, NSError *error) {
if (!error) {
[self fetchUserPermissionsWithCompletionHandler:^(BOOL extendedGranted) {
if (extendedGranted) {
[self setCanPostToActivityStream:YES];
}
}];
}
else {
NSLog(@"%@", [error localizedDescription]);
}
}];
}
@catch (NSException *exception) {
NSLog(@"%@", exception);
}
Run Code Online (Sandbox Code Playgroud)
现在,问题不在于上面的代码 - 代码工作正常.我再次遇到的问题是,当用户在允许权限后没有成功返回应用程序时,取消之前的重新授权调用.Facebook SDK似乎并没有以任何方式提醒应用程序这种情况.
我一直在乱砍几个小时试图解决这个问题无济于事 - 似乎我唯一的选择是在这里发帖,看看是否有人可以对这个问题有所了解.它可能是AFNetworking的问题,或者(更有可能),它可能是我的代码的问题.
我正在使用的代码完全适用于我的应用程序中99%的操作.我正在开发一个通过构建JSON搜索,发送它们并从服务器接收响应来利用Elastic Search的应用程序.
以下是返回的JSON示例:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": null,
"hits": [
{
"_index": "asx",
"_type": "61a88d3848b00655d9aa59db70847318",
"_id": "b91f9257744fedb4ef1c127e275c127c",
"_score": null,
"_source": {
"value": "22/06/1998"
},
"sort": [
4.439049394553e-312
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,将其插入jsonlint.com(并了解一些关于JSON格式),很容易看出这是有效的JSON.
我正在使用AFHTTPClient子类来发布请求并接收数据.这是我用来POST的代码:
[super postPath:path parameters:parameters success:^(AFHTTPRequestOperation *operation, NSDictionary *response) {
NSData *responseData = [(AFJSONRequestOperation *)operation responseData];
NSDictionary *responseDictionary;
if (responseData != nil) {
responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:NULL];
} …
Run Code Online (Sandbox Code Playgroud) 我已经环顾四周寻找答案,并在过去的两个小时里把我的头发拉到了尽头。
我正在实现一个非常基本的自定义视图控制器过渡动画,它只是放大呈现的视图控制器并在呈现的视图控制器中增长。它添加了淡入淡出效果(0 到 1 alpha,反之亦然)。
它在呈现视图控制器时工作正常,但是在关闭时,它会将presenting
视图控制器带回所有方式以填充屏幕,但随后它莫名其妙地消失了。在这些动画之后我没有做任何改变 alpha 或隐藏值的事情,这几乎是一个全新的项目。我已经开发 iOS 应用程序 3 年了,所以我怀疑这可能是一个错误,除非有人能找出我哪里出错了。
class FadeAndGrowAnimationController : NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate {
func animationControllerForPresentedController(presented: UIViewController!, presentingController presenting: UIViewController!, sourceController source: UIViewController!) -> UIViewControllerAnimatedTransitioning! {
return self
}
func animationControllerForDismissedController(dismissed: UIViewController!) -> UIViewControllerAnimatedTransitioning! {
return self
}
func transitionDuration(transitionContext: UIViewControllerContextTransitioning!) -> NSTimeInterval {
return 2
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning!) {
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) as UIViewController
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) as UIViewController
toViewController.view.transform = CGAffineTransformMakeScale(0.5, 0.5)
toViewController.view.alpha = 0
transitionContext.containerView().addSubview(fromViewController.view)
transitionContext.containerView().addSubview(toViewController.view)
transitionContext.containerView().bringSubviewToFront(toViewController.view) …
Run Code Online (Sandbox Code Playgroud) ios ×2
objective-c ×2
afnetworking ×1
animation ×1
cocoa ×1
facebook ×1
ipad ×1
json ×1
swift ×1