我有一个使用Parse.com的现有iOS应用。您可以使用用户名和密码,Facebook或Twitter登录,也可以创建新的登录名。我正在准备一个更新,它有一个WatchKit扩展,可以在新Apple Watch上运行精简版。我想知道怎么做是让手表检查iPhone上是否存在PFUser
,或者甚至iPhone用户是否已注销。你对此有什么建议?
我在AppDelegate中拥有Parse应用程序的应用程序ID,并在AppDelegate中初始化PFTwitterUtils
和PFFacebookUtils
,但从watch运行时不会调用它们。
答案 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.
}