观看应用程序以确定用户是否在iPhone上登录?

时间:2015-03-20 14:34:22

标签: ios iphone parse-platform watchkit apple-watch

我有一个使用Parse.com的现有iOS应用。您可以使用用户名和密码,Facebook或Twitter登录,也可以创建新的登录名。我正在准备一个更新,它有一个WatchKit扩展,可以在新Apple Watch上运行精简版。我想知道怎么做是让手表检查iPhone上是否存在PFUser,或者甚至iPhone用户是否已注销。你对此有什么建议?

我在AppDelegate中拥有Parse应用程序的应用程序ID,并在AppDelegate中初始化PFTwitterUtilsPFFacebookUtils,但从watch运行时不会调用它们。

2 个答案:

答案 0 :(得分:1)

我不确定Parse存储数据的位置,但我认为它不在您的共享应用组文件夹中。如果是这种情况,那么解析您的扩展程序将无法访问与您的iOS应用程序中运行的解析相同的数据(尽管我并非100%肯定。)我建议使用" LoggedIn"设置共享用户默认值。您可以在每次用户登录或退出iOS应用时更新该设置,然后只需在您的观看应用中检查该设置。

答案 1 :(得分:1)

前段时间我有同样的问题,我最终决定使用darwinNotifications在iPhone应用程序和applewatch之间发送通知,并在他们之间共享数据我使用的是SharedGroups。 所以当用户登录时: 1)我在共享组中编写用户 2)我从iOS应用程序向Apple Watch发送darwin通知 3)Apple Watch收到darwin通知并读取共享组以检查是否有新用户。

此代码发送达尔文通知:

//Write the user on shared groups 
CFNotificationCenterRef notification = CFNotificationCenterGetDarwinNotifyCenter ();
CFStringRef UserLoggedInCFString = (__bridgeCFStringRef)DarwinNotificationUserLoggedIn;
CFNotificationCenterPostNotification(notification, UserLoggedInCFString, NULL, NULL, YES);

applewatch上的这段代码检测到通知:

CFNotificationCenterRef notificationUserLoggedIn = CFNotificationCenterGetDarwinNotifyCenter (); // 1
CFStringRef userLoggedInCFString = (__bridgeCFStringRef)DarwinNotificationUserLoggedIn;
CFNotificationCenterAddObserver(notificationUserLoggedIn, (__bridge const void *)(self), &userHasLogguedIn, userLoggedInCFString,NULL, CFNotificationSuspensionBehaviorDeliverImmediately);

void userHasLogguedIn(CFNotificationCenterRef center,
                            void *observer,
                            CFStringRef name,
                            const void *object,
                            CFDictionaryRef userInfo)
{
    //Read the user from shared groups.
}