我在我的原生iPhone应用程序中,在允许登录/注册的网站上使用WKWebView,并将会话信息存储在cookie中.我试图找出如何持久存储cookie信息,因此当应用程序重新启动时,用户仍然可以使用其Web会话.
我在应用程序中有2个WKWebViews,它们共享一个WKProcessPool.我从一个共享进程池开始:
WKWebView
然后为每个WKWebView:
WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
theConfiguration.processPool = processPool;
self.webView = [[WKWebView alloc] initWithFrame:frame configuration:theConfiguration];
Run Code Online (Sandbox Code Playgroud)
当我使用第一个WKWebView登录,然后一段时间后将操作传递给第二个WKWebView时,会话保留,因此cookie已成功共享.但是,当我重新启动应用程序时,会创建一个新的进程池并销毁会话信息.有没有办法让会话信息通过应用程序重启持续存在?
我在iOS 9上使用最新的Facebook SDK(4.6)遇到了一个问题.为了授权用户,我使用了FBSDKLoginManager.我试过设置这个:
loginManager.loginBehavior = FBSDKLoginBehaviorNative;
Run Code Online (Sandbox Code Playgroud)
但SDK似乎仍然总是使用SFSafariViewController来授权Facebook.
这是我面临的问题.如果用户使用FacebookAccountA在其设备上安装了FB应用程序,然后尝试使用我的应用程序进行身份验证,则会显示此SFSafariViewController,他们可以使用FacebookAccountB(单独的FB帐户)对应用程序进行身份验证.
然后在应用程序中,我尝试与以下内容分享:
FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:shareString];
FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.shareContent = content;
dialog.delegate = self;
[dialog show];
Run Code Online (Sandbox Code Playgroud)
共享对话框的默认设置最终是FBSDKShareDialogModeShareSheet.共享表正确地显示在应用程序中,并且帖子似乎有效,但链接发布到FacebookAccountA(本机应用程序帐户),而不是FacebookAccountB(通过我的应用程序进行身份验证的链接).
因此,如果用户碰巧使用不同于他们在其原生应用上登录的Facebook帐户对我的应用进行身份验证,他们最终可能会发布到与用于验证我的应用的帐户不同的帐户.有办法防止这种情况吗?
提前致谢.
我正在为我的iOS应用程序开发照片的共享扩展.在扩展内部,我能够从NSItemProvider成功检索UIImage对象.
但是,我希望能够与我的容器应用程序共享图像,而不必将整个图像数据存储在我的共享用户默认值中.有没有办法获得用户在共享扩展中选择的图像的PHAsset(如果他们从他们的设备中选择)?
照片框架上的文档(https://developer.apple.com/library/ios/documentation/Photos/Reference/Photos_Framework/)有一句话说"这种架构使得使用它的过程变得简单,安全和高效来自多个线程或多个应用和应用扩展的相同资产."
这条线让我觉得有一种方法可以在扩展和容器应用程序之间共享相同的PHAsset,但我还没有找到任何方法来做到这一点?有没有办法做到这一点?
我看到一些带有该标题的崩溃报告:
NSPersistentStoreCoordinator没有永久存储(损坏的文件)。它无法执行保存操作。将永久存储添加到协调器的代码在这里:
NSURL *applicationDocumentsDirectory = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].lastObject;
NSURL *storeURL = [applicationDocumentsDirectory URLByAppendingPathComponent:@"myDatabase.sqlite"];
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myDataModel" withExtension:@"momd"];
NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
NSDictionary *storeOptions = @{NSInferMappingModelAutomaticallyOption:@YES,
NSMigratePersistentStoresAutomaticallyOption:@YES,
NSSQLitePragmasOption:@{@"synchronous": @"OFF"}};
// Create the persistent store.
self.persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];
NSError *error = nil;
if (![self.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:storeOptions
error:&error])
{
}
Run Code Online (Sandbox Code Playgroud)
我已经记录了来自“ addPersistentStoreWithType”调用的错误,它是以下内容:
NSCocoaErrorDomain 259
NSSQLiteErrorDomain = 11;
NSUnderlyingException = "Fatal error. The database at <path> is corrupted. SQLite Error code:11, 'database disk image …Run Code Online (Sandbox Code Playgroud) 我正在通过广播向我的beta测试人员部署我的应用程序的测试版本.在iOS 7之前,我可以通过让他们安装像UDID Pro这样的应用程序并让他们通过电子邮件发送给我来获取他们的UDID.
如果他们有iOS 7,我如何从我的beta测试者那里获得UDID,这样我就可以为我的应用程序的Ad Hoc发布设置配置文件?