我有一个问题,我正在使用FBSDK AppInvites并使用该链接导致一些恼人的行为......
场景1(工作):我在iPhone上安装了Facebook应用程序,用户收到了我在其他设备上从我的应用程序发送的应用邀请。由于它不在App Store我没有点击应用程序邀请中的链接,但我在我的iPhone上从Xcode运行我的应用程序。在它构建并运行之后,我按下iPhone上的主页按钮,然后转到FB应用程序并点击AppInvite链接。我的应用程序重新打开,然后我使用FBSDK登录登录。登录后,我运行一个方法检查应用程序Invite链接的嵌入式引用代码,然后运行一些打印到Label的东西!一切都工作!
场景2(不工作):我完成了以上所有操作但是在我从Xcode构建/运行应用程序后,我现在停止在我的设备上运行应用程序并且应用程序在我的iPhone上关闭。然后我进入FB应用程序并点击应用程序邀请,打开我的应用程序。我使用FBSDK登录登录,一切都很好,但没有任何内容打印到标签上。
场景3(工作):我再次执行方案2但是在我打开FB应用程序并点击AppInvite之前打开我的应用程序然后按iPhone上的主页按钮。然后我打开FB并点击AppInvite链接并使用FBSDK登录登录并填写标签!
HOLY COW究竟发生了什么!?我确信我在app delegate中错过了一个方法,用于在特定状态下打开应用程序,但我目前处于一个完整的泡菜中,我无法看到树木的木材!
这是我的app委托中处理此问题的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[backendless initApp:APP_ID secret:SECRET_KEY version:VERSION_NUM];
[backendless.messaging registerForRemoteNotifications];
[backendless.userService setStayLoggedIn:YES];
@try {
[backendless initAppFault];
}
@catch (Fault *fault) {
NSLog(@"didFinishLaunchingWithOptions: %@", fault);
}
return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
}
-(void)applicationWillEnterForeground:(UIApplication *)application{
[FBSDKAppEvents activateApp];
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[FBSDKAppEvents activateApp];
}
然后我运行下面的方法,正如我所说,当应用程序处于运行状态但在后台,但不是从它的新发布时。代码基本上是检索URL和引用代码,然后使用它。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation