- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在为我们的应用程序实现新的 Facebook 登录时,我遇到了一些麻烦。我们正在使用 Facebook SDK v4.3 进行开发。登录/注册过程在内存不足的设备上崩溃。我们怀疑低内存限制导致我们的应用程序在触发切换到 Facebook 进行身份验证时终止。作为 Facebook 旧版 SDK 中的文档(链接 https://developers.facebook.com/docs/facebook-login/ios#login-apicalls ):
Login flows require an app switch to complete, it's possible your app gets terminated by iOS in low memory conditions or if your app does not support backgrounding.
In that case, the state change handler supplied to your open call disappears.
To handle that scenario explicitly assign a state change handler block to the FBSession instance any time prior to the handleOpenURL: call:
// During the Facebook login, your app passes control to the Facebook iOS app or Facebook in a mobile browser.
// After authentication, your app will be called back with the session information.
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
// Note this handler block should be the exact same as the handler passed to any open calls.
[FBSession.activeSession setStateChangeHandler:^(FBSession *session, FBSessionState state, NSError *error) {
// Retrieve the app delegate
AppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
// Call the app delegate's sessionStateChanged:state:error method to handle session state changes
[appDelegate sessionStateChanged:session state:state error:error];
}];
return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication];
}
不幸的是,新的 Facebook SDK 弃用了 FBSession.activeSession 及其 stateChangeHandler。我遵循了我的应用程序的自定义 UI FBLogin 按钮,这是我的 appDelegate 代码
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
代码工作正常,在正常情况下完美执行。但是,它在冷启动时表现异常(由于内存不足)。所以我的问题是:我们如何防止这种情况发生?新 SDK 是否有等效的处理程序?
附言。我完成了管理设备内存的工作。但在这种压力条件下它仍然无法正常工作。
编辑:我只想获取用户成功的基本信息。因此,我不需要跟踪(或不需要)访问 token 。这是我用来调用登录的代码块
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
[ErrorMessageDisplay displayErrorAlertOnViewController:self withTitle:FB_LOGIN_ERROR_TITLE andMessage:FB_LOGIN_ERROR_MESSAGE];
[self.loginView enableLoginButtons];
} else if (result.isCancelled) {
[ErrorMessageDisplay displayErrorAlertOnViewController:self withTitle:FB_LOGIN_CANCEL_TITLE andMessage:FB_LOGIN_CANCEL_MESSAGE];
[self.loginView enableLoginButtons];
} else {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id user, NSError *error) {
//TODO do something in here
}];
}
}];
使用代码的一部分,应用程序在使用 facebook 进行身份验证后仍然卡住在内存不足的情况下。事实上,处理程序根本没有
最佳答案
FBSDKApplicationDelegate
的 application:didFinishLaunchingWithOptions:
(除了 openURL:)FBSDKAccessToken currentAccessToken
(例如 viewDidLoad,如 https://developers.facebook.com/docs/facebook-login/ios/ 中所述)。这将由 SDK 在您的应用“冷启动”的情况下为您设置。关于ios - Facebook 登录在冷启动时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082441/
我想做一些类似 Jar cvf file.jar *.class 的事情,但是我在我的 jre6 java 安装中没有看到 jar 编译器文件。 jar 是独立的东西吗?我想安装? 最佳答案 您需要下
阅读时 an intro to rxjs我读了以下内容并有点担心 the second subscription will restart the sequence from the first va
如何将 MainEngine Observable 转换为 Cold?来自这个例子: public IObservable MainEngine { get
我最近一直在进行冷迁移...这意味着我无法在进行迁移时从应用程序级别读取/写入数据库(维护页面)。 这样就不会因为更改结构而发生错误,而且如果负载很大,我也不希望 mysql 在迁移过程中崩溃。 我的
我需要在 Linux 中以物理方式关闭 PCI 设备的电源。我已经找到了我需要的函数,但似乎编写了一个内核模式应用程序来使用该库,因为我在内核头文件中找到了它。 我在 drivers/pci/pci.
我是一名优秀的程序员,十分优秀!