В данной статье будет код только на Objective-C, поэтому полезно знать как вызывать внешние методы из Unity или прочитать статью как это делать.
Для работы с Facebook я использовал Facebook iOS SDK.
1. Открываем в XCode проект, расположенный в папке src.
2. Перетаскиваем из него папку Facebook в свой проект.
3. В свойствах проекта в Header Search Path прописываем путь к папке src.
4. Подключаем CoreGraphics framework.
5. В info.plst добавляем строку "URL Types", внутри "Item 0" создаем строку "URL Schemes" и присваеваем ключу "Item 0" значение fb[ID приложения]
Для того, чтобы запрашивать у пользователя Facebook из приложения доступ к тем или иным функциям, сначала нужно зарегистрировать его на FB. Идем сюда, нажимаем "Создать новое приложение" и заполняем соответствующую информацию.
Для данного примера нам понадобится ID приложения.
Создаем класс со свойством Facebook* fb.
Для логина и выхода используются следующие методы:
- (void)login
{
fb = [[Facebook alloc] initWithAppId:@"ID приложения"];
// используются для проверки заогинен ли пользователь
// возможно не самый лучший вариант, но другого не нашел
fb.accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"AccessToken"];
fb.expirationDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];
// в данном случае пользователя спросят о том, согласен ли он, чтобы
// наше приложение могло писать ему на стену сообщения без его ведома
permissions = [[NSArray arrayWithObjects: @"publish_stream", nil] retain];
// и вызываем диалог для входа
[fb authorize:permissions delegate:self];
}
- (void)fbDidLogin
{
// если пользователь успешно вошел, записываем в память соответствующую информацию.
// Это также необходимо для проверки залогинен ли пользоваетель
[[NSUserDefaults standardUserDefaults] setObject:fb.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:fb.expirationDate forKey:@"ExpirationDate"];
}
- (void)logout
{
[fb logout:self];
[fb logout:self];
[[NSUserDefaults standardUserDefaults] setObject:fb.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:fb.expirationDate forKey:@"ExpirationDate"];
}
// метод используется для проверки залогинен ли пользователь либо нет
- (BOOL)isSessionValid
{
return [fb isSessionValid];
}
Для работы на ранних версиях прошивок (у меня начная с 4.1) в класс Unity AppController.mm необходимо добавить метод:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [[socialNetworks facebook] handleOpenURL:url];
}
В следующем посте постараюсь описать, как без лишних диалогов оставлять публикации на стене пользователя.