一般集成使用一些第三方SDK都需要在AppDelegate中注册初始化,初始化的方式无关几种:
- 1.极品的程序猿会在didFinishLaunchingWithOptions一个方法中从头搞到尾,后期维护到吐
- 2.在AppDelegate.m中为每一种SDK都抽取出来一个方法,后期修改稍微好点,但是一旦第三方SDK多点,那么.m里面的代码会变得巨多,动则上千行,另外其它项目使用到同样的SDK,只能粘贴、复制、粘贴、复制……
- 3.最好的办法:创建SDK对应的工具类或者分类,把注册初始化的代码完全抽取出来,最好在AppDelegate中一句代码搞定,这感觉爽到爆
下面是封装的ShareSDK、微信支付、支付宝支付、极光推送对应的几个分类,把分类拖进项目,几句代码搞定全部。
创建的几个分类
#import "AppDelegate+ShareSDK.h"
#import "AppDelegate+WXApi.h"
#import "AppDelegate+AlipaySDK.h"
#import "AppDelegate+JPushSDK.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//初始化所有的第三方SDK
[self setUpThridPartySDKWithOptions:launchOptions];
return YES;
}
- (void)setUpThridPartySDKWithOptions:(NSDictionary *)launchOptions
{
//注册ShareSDK
[AppDelegate registerShareSDK];
//注册极光推送
[AppDelegate registerJPushSDKWithOptions:launchOptions];
//注册微信支付
[AppDelegate registerWeChatWithAppID:@"AppID"];
[AppDelegate registerWXPayWithMchID:@"MchID" appSecret:@"Secret"];//客户端签名时调用注册
//注册支付宝支付
[AppDelegate registerAlipayWithPartnerID:@"PartnerID" sellerID:@"sellerID" partnerPrivKey:@"PrivKey"];//客户端签名时调用注册
}
分享内容API
/**
* 定制平台分享内容分享
*/
+ (void)platShareView:(UIView *)view WithShareContent:(NSString *)shareContent WithShareUrlImg:(NSString *)shareUrlImg WithShareTitle:(NSString *)shareTitle WithHTMLURL:(NSString *)URL;
支付宝支付API
/**
* 发起支付(客户端签名版本)
*
* @param orderID 订单号
* @param orderName 订单标题
* @param orderDescription 订单描述
* @param orderPrice 订单价格,保留小数点2位,单位(元)
* @param orderNotifyUrl 服务端回调URL(重要)
* @param appScheme 设置的app的URLScheme
* @param config 支付完成后的回调(无论是网页版本还是支付宝客户端的版本都通过此block回调)(successed = YES 代表支付成功)
*/
+ (void)sendAlipayPayRequestWithOrderID:(NSString *)orderID
orderName:(NSString *)orderName
orderDescription:(nullable NSString *)orderDescription
orderPrice:(NSString *)orderPrice
orderNotifyUrl:(NSString *)orderNotifyUrl
appScheme:(NSString *)appScheme
callbackConfig:(void (^)(BOOL successed))config;
微信支付API
/**
* 发起支付 (客户端签名版本)
*
* @param orderID 订单ID
* @param orderName 订单标题
* @param orderPrice 订单价格,单位分,不能有小数点
* @param orderNotifyUrl 服务器回调URL(重要)
* @param config 支付完成后的回调(successed = YES 代表支付成功)
*/
+ (void)sendWeChatPayRequestWithOrderID:(NSString *)orderID
orderName:(NSString *)orderName
orderPrice:(NSString *)orderPrice
orderNotifyUrl:(NSString *)orderNotifyUrl
callbackConfig:(void (^)(BOOL successed))config;
其它的一些第三方SDK也可以按照这样封装,具体实现代码下载地址地址链接,注意:因为第三方SDK.a太大不好上传,所以没有添加。