1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dhar-YTThirdPlatformManager

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Управление третьими платформами для iOS

Компонентизация интеграции третьих сторон в iOS (версия 1.0.1)

Историческая версия

Интеграция компонентов третьих сторон в iOS (версия 1.0.0)

Анализ принципов работы

См. мою статью на блоге Интеграция компонентов третьих сторон в iOS и её продолжение Продолжение интеграции компонентов третьих сторон в iOS

Как использовать

Установка зависимостей

Перейти в директорию Example, где находится демонстрационный проект

Директория Example с демонстрационным проектом

Запустите команду pod install, чтобы установить зависимости

  Example git:(master)  pod install
Анализируются зависимости
Получение спецификаций пакета PTTestKit из ../../PTTestKit
Получение спецификаций пакета PTThirdPlatformKit из ../
Загрузка зависимостей
Используется PTTestKit (0.1.0)
Используется PTThirdPlatformKit (0.1.0)
Используется SDWebImage (4.0.0)
Используется WechatOpenSDK (1.7.7)
Используется WeiboSDK (3.1.3)
Генерация проекта Pods
Интегрирование клиента проекта
Отправка статистики
Установка пакетов завершена! В вашем Podfile указано 6 зависимостей, а всего установлено 5 пакетов.

Установка завершена. Откройте файл PTThirdPlatformKit.xcworkspace.
По умолчанию устанавливаются все платформы. Можно изменить конфигурацию в файле Podfile, чтобы выбрать одну или несколько платформ. Подробнее см. раздел Выбор необходимых платформ третьих сторон.

Конфигурация платформ третьих сторон

  1. Настройка платформ в методе didFinishLaunchingWithOptions AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Добавление пользовательских платформ в виде плагинов
    PTThirdPlatformManager* configInstance = [PTThirdPlatformManager sharedInstance];
    [configInstance addCustomSharePlatform:PTCustumShareTypeDingTalk managerClass:PTDingTalkManager.class];
    [configInstance setPlatform:PTCustumShareTypeDingTalk appID:kDingTalkAppID appKey:nil appSecret:nil redirectURL:nil URLSchemes:nil];

    // Настройка платформ третьих сторон
    [configInstance setPlatform:PTThirdPlatformTypeWechat appID:kWXAppID appKey:nil appSecret:kWXAppSecret redirectURL:nil URLSchemes:nil];
    [configInstance setPlatform:PTThirdPlatformTypeTencentQQ appID:kTencentAppID appKey:kTencentAppKey appSecret:kTencentAppSecret redirectURL:nil URLSchemes:nil];
    [configInstance setPlatform:PTThirdPlatformTypeWeibo appID:kWeiboAppID appKey:kWeiboAppKey appSecret:kWeiboAppSecret redirectURL:kWeiboRedirectURI URLSchemes:nil];
    [configInstance setPlatform:PTThirdPlatformTypeAlipay appID:nil appKey:nil appSecret:nil redirectURL:nil URLSchemes:kAlipayURLScheme];
    [configInstance thirdPlatConfigWithApplication:application didFinishLaunchingWithOptions:launchOptions];

    return YES;
}
  1. Настройка обратного вызова URL в методе openURL AppDelegate
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[[PTThirdPlatformConfigManager sharedInstance] thirdPlatCanOpenUrlWithApplication:application openURL:url sourceApplication:sourceApplication annotation:annotation]];
}
  1. Вызов функциональности
    Ниже приведены примеры вызова функций входа, размещения и платежа различных платформ. Для получения более подробной информации скачайте исходный код проекта.
- (void)viewDidLoad {
    [super viewDidLoad];

   typeof(self) __weak weakSelf = self;
    [self addActionWithName:@"QQ Login" callback:^{
        [[PTThirdPlatformConfigManager sharedInstance] signInWithType:PTThirdPlatformTypeTencentQQ fromViewController:weakSelf callback:^(ThirdPlatformUserInfo *userInfo, NSError *err) {

        }];
    }];

    [self addActionWithName:@"Wechat Login" callback:^{
        [[PTThirdPlatformConfigManager sharedInstance] signInWithType:PTThirdPlatformTypeWechat fromViewController:weakSelf callback:^(ThirdPlatformUserInfo *userInfo, NSError *err) {

        }];
    }];

    [self addActionWithName:@"Weibo Login" callback:^{
        [[PTThirdPlatformConfigManager sharedInstance] signInWithType:PTThirdPlatformTypeWeibo fromViewController:weakSelf callback:^(ThirdPlatformUserInfo *userInfo, NSError *err) {

        }];
    }];

    // Модель размещения
    ThirdPlatformShareModel* shareModel = [[ThirdPlatformShareModel alloc] init];
    shareModel.image = nil;
    shareModel.imageUrlString = @"";
    shareModel.title = @"title";
    shareModel.text = @"text";
    shareModel.weiboText = @"weibo text";
    shareModel.urlString = @"http://www.baidu.com";
    shareModel.fromViewController = self;
    shareModel.shareResultBlock = ^(PTShareType platform, PTShareResult result, NSError * error) {

    };

    
    [self addActionWithName:@"QQ Share" callback:^{
        shareModel.platform = PTShareTypeQQ;
        [[PTThirdPlatformConfigManager sharedInstance] shareWithModel:shareModel];
    }];

    [self addActionWithName:@"Wechat Share" callback:^{
        shareModel.platform = PTShareTypeWechat;
        [[PTThirdPlatformConfigManager sharedInstance] shareWithModel:shareModel];
    }];

    [self addActionWithName:@"Weibo Share" callback:^{
        shareModel.platform = PTShareTypeWeibo;
        [[PTThirdPlatformConfigManager sharedInstance] shareWithModel:shareModel];
    }];

    [self addActionWithName:@"Wechat Pay" callback:^{
        PTOrderModel* order = [[PTOrderModel alloc] init];
        [[PTThirdPlatformConfigManager sharedInstance] payWithPlatform:PaymentMethodTypeWechat order:order paymentBlock:^(BOOL result) {

        }];
    }];

    [self addActionWithName:@"Alipay Pay" callback:^{
        PTOrderModel* order = [[PTOrderModel alloc] init];
        [[PTThirdPlatformConfigManager sharedInstance] payWithPlatform:PaymentMethodTypeAlipay order:order paymentBlock:^(BOOL result) {

        }];
    }];

Конфигурация SDK

Проект уже содержит SDK WeChat, Weibo, QQ. Alipay и QQ используются как framework, а WeChat и Weibo - через Pod. Запустите pod install, чтобы импортировать SDK WeChat и Weibo. Все необходимые библиотеки уже настроены, поэтому вам не потребуется повторно настраивать их.

Конфигурация URL Types

Эти ключи или APPID должны быть заполнены самостоятельно. В частности, URL Schemes для вызова платежа Alipay должны совпадать с конфигурацией в URL Types.
Конфигурация URL Types

Вы можете скопировать содержимое следующего файла конфигурации, которое включает конфигурации для WeChat, Weibo, QQ и Alipay. Измените соответствующие конфигурации для каждой платформы и вставьте их в info.plist. Для других платформ используйте документацию соответствующих платформ.

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>weixin</string>
<key>CFBundleURLSchemes</key>
<array>
<string>ваш ID приложения WeChat</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>alipayPlush</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>tencent</string>
<key>CFBundleURLSchemes</key>
<array>
<string>ваш ID приложения QQ</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>weibo</string>
<key>CFBundleURLSchemes</key>
<array>
<string>ваш ключ приложения Weibo</string>
</array>
</dict>
</array>
```#### Конфигурация LSApplicationQueriesSchemes
Необходимо для вызова приложений третьих сторон. Ниже представлены конфигурации для WeChat, Weibo, QQ и Alipay. Для WeChat требуется указать ваш ID приложения WeChat. Для других платформ используйте документацию соответствующих платформ.
```ruby
<key>LSApplicationQueriesSchemes</key>
<array>
<string>wechat</string>
<string>weixin</string>
<string>ваш ID приложения WeChat</string>
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqzoneopensdk</string>
<string>mqqopensdkapiV3</string>
<string>mqqopensdkapiV3</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqzoneopensdk</string>
<string>tim</string>
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>dingtalk</string>
<string>dingtalk-open</string>
</array>

Выбор необходимых платформ третьих сторон

Можно настроить различные платформы третьих сторон через файл Podfile. Ниже представлена конфигурация всех встроенных платформ: Alipay, QQ, Weibo, WeChat. Вы можете выбрать одну или несколько платформ. После изменения Podfile выполните команду pod install, чтобы применить новые настройки.

#use_frameworks!
platform :ios, '8.0'

target 'PTThirdPlatformKit_Example' do

    pod 'PTTestKit', :path => '../../PTTestKit'

    pod 'PTThirdPlatformKit', :path => '../'
    pod 'PTThirdPlatformKit/AlipayManager', :path => '../'
    pod 'PTThirdPlatformKit/TencentManager', :path => '../'
    pod 'PTThirdPlatformKit/WeiboManager', :path => '../'
    pod 'PTThirdPlatformKit/WXManager', :path => '../'

  target 'PTThirdPlatformKit_Tests' do
    inherit! :search_paths
    
  end
end

Расширение SDK третьих сторон

Вы можете добавить свои собственные SDK третьих сторон в качестве плагинов. После настройки SDK выполните следующие шаги:

  • Наследуйте класс PTBaseThirdPlatformManager, чтобы создать менеджера SDK
  • Реализуйте интерфейс PTAbsThirdPlatformRequestHandler, чтобы создать объект для вызова SDK
  • Наследуйте класс PTBaseThirdPlatformRespManager, чтобы создать объект для обработки ответов SDK

На примере DingTalk платформы создаются три связанных класса: Файлы DingTalk платформы

Вызовите два метода класса PTThirdPlatformManager: addCustomPlatform и addCustomSharePlatform, чтобы добавить пользовательскую платформу.

// Добавление пользовательской платформы в виде плагина
[[PTThirdPlatformManager sharedInstance] addCustomSharePlatform:PTCustumShareTypeDingTalk managerClass:PTDingTalkManager.class];
[[PTThirdPlatformManager sharedInstance] setPlaform:PTCustumShareTypeDingTalk appID:kDingTalkAppID appKey:nil appSecret:nil redirectURL:nil];

После этого вы сможете вернуться к разделу [Как использовать].

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Платформа iOS интегрирует сторонние платформы с помощью компонентного и плагинного подходов. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dhar-YTThirdPlatformManager.git
git@api.gitlife.ru:oschina-mirror/dhar-YTThirdPlatformManager.git
oschina-mirror
dhar-YTThirdPlatformManager
dhar-YTThirdPlatformManager
master