iOS SDK

Репозиторий на Github: ok-ios-sdk

Пример iOS приложения с SDK: ok-ios-sdk-examples

iOS SDK позволяет авторизоваться через клиентский OAuth, делать записи к пользователю и приглашать/слать нотификации в игру, а также вызывать REST-методы.

Перед подключением SDK необходимо проверить в настройках приложения:

  • iOS добавлен в платформы приложения
  • включена клиентская авторизация
  • добавлены redirect_uri вида ok{APP_ID}://authorize
  • приложение обладает нужными для функционирования правами, для нативных приложений рекомендуется иметь и запрашивать LONG_ACCESS_TOKEN

Для подключения SDK:

  • положить файлы SDK в проект, например, как submodule в git
  • поправить Info.plist по аналогии с примером
    • добавить схемы ok{APP_ID} и okauth
    • добавить следующий блок
      <key>NSAppTransportSecurity</key>
      <dict>
          <key>NSAllowsArbitraryLoads</key>
          <true/>
      </dict>
      
  • поправить в AppDelegate метод didFinishLaunchingWithOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    OKSDKInitSettings *settings = [OKSDKInitSettings new];
    settings.appKey = @"{APP_KEY}";
    settings.appId = @"{APP_ID}";
    settings.controllerHandler = ^{
        return self.window.rootViewController;
    };
    [OKSDK initWithSettings: settings];
    return YES;
}
  • добавить в AppDelegate метод openURL
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    [OKSDK openUrl:url];
    return YES;
}

Использование SDK

Вызов авторизации (authorizeWithPermissions):

[OKSDK authorizeWithPermissions:@[@"VALUABLE_ACCESS",@"LONG_ACCESS_TOKEN"] 
	success:^(id data) {} 
	error:^(NSError *error) {}
];

Вызов REST-метода (invokeMethod):

[OKSDK invokeMethod:@"METHOD_NAME" arguments:@{} 
	success:^(NSDictionary* data) {} 
	error:^(NSError *error) {}
];

Вызов постинга/виджетов (showWidget):

[OKSDK showWidget:@"WidgetMediatopicPost" arguments:@{@"st.attachment":@"{\"media\":[{\"type\":\"text\",\"text\":\"hello world!\"}]}"} options:@{@"st.utext":@"on"} 
	success:^(NSDictionary *data) {} 
	error:^(NSError *error) {}
];

[OKSDK showWidget:@"WidgetInvite" arguments:@{} options:@{} 
	success:^(NSDictionary *data) {} 
	error:^(NSError *error) {}
];

[OKSDK showWidget:@"WidgetSuggest" arguments:@{} options:@{} 
	success:^(NSDictionary *data) {} 
	error:^(NSError *error) {}
];