Компонентизация интеграции третьих сторон в iOS (версия 1.0.1)
Интеграция компонентов третьих сторон в iOS (версия 1.0.0)
См. мою статью на блоге Интеграция компонентов третьих сторон в iOS и её продолжение Продолжение интеграции компонентов третьих сторон в iOS
Перейти в директорию 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, чтобы выбрать одну или несколько платформ. Подробнее см. раздел Выбор необходимых платформ третьих сторон.
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;
}
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]];
}
- (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 WeChat, Weibo, QQ. Alipay и QQ используются как framework, а WeChat и Weibo - через Pod. Запустите pod install
, чтобы импортировать SDK WeChat и Weibo. Все необходимые библиотеки уже настроены, поэтому вам не потребуется повторно настраивать их.
Эти ключи или APPID должны быть заполнены самостоятельно. В частности, URL Schemes для вызова платежа Alipay должны совпадать с конфигурацией в 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 выполните следующие шаги:
PTBaseThirdPlatformManager
, чтобы создать менеджера SDKPTAbsThirdPlatformRequestHandler
, чтобы создать объект для вызова SDKPTBaseThirdPlatformRespManager
, чтобы создать объект для обработки ответов SDKНа примере DingTalk платформы создаются три связанных класса:
Вызовите два метода класса PTThirdPlatformManager
: addCustomPlatform
и addCustomSharePlatform
, чтобы добавить пользовательскую платформу.
// Добавление пользовательской платформы в виде плагина
[[PTThirdPlatformManager sharedInstance] addCustomSharePlatform:PTCustumShareTypeDingTalk managerClass:PTDingTalkManager.class];
[[PTThirdPlatformManager sharedInstance] setPlaform:PTCustumShareTypeDingTalk appID:kDingTalkAppID appKey:nil appSecret:nil redirectURL:nil];
После этого вы сможете вернуться к разделу [Как использовать].
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )