在完成添加分享組件的 SDK 后,您還需要對工程進行配置,在初始化后即可開始使用分享組件。
本文將結合 分享官方 Demo 介紹如何在 10.1.60 及以上版本的基線中使用分享 SDK。
配置工程
配置第三方應用跳轉白名單
iOS 9 及以上系統中,要支持應用的分享和授權等操作,需要配置 Scheme 名單。系統會自動到工程的 info.plist
下檢測是否設置了應用的 Scheme,對于需要跳轉的應用,如果沒有配置,就無法正常跳轉。
各渠道對應的 Value 如下:
微信:weixinULAPI、wechat、weixin。
微博:sinaweibohd、sinaweibo、weibosdk、weibosdk2.5。
支付寶:alipay、alipayShare。
QQ:mqq、mqqapi、mqqwpa、mqqOpensdkSSoLogin。
釘釘:dingtalk、dingtalk-open。
配置 URL Scheme
為保證可以從各渠道應用正確跳轉回當前應用,需在當前工程的 Info.plist 文件中加入 urlScheme(從各分享渠道獲取)。
微信回調源 App 的 scheme 均為分配的
key
微博的 scheme 為
"wb" + key
QQ 的 scheme 為
"tencent" + APPID
支付寶的 Identifier 為 alipayShare,scheme 為
'ap' + APPID
初始化設置
使用分享組件時,首先需要在對應第三方平臺創建對應的應用信息,然后使用應用的信息進行注冊(包括 appId,appSecret,universalLink 等信息),注冊使用的方法如下所示。
使用 mPaaS 框架時
在 DTFrameworkInterface
的分類中實現下列方法,并在此方法中以詞典的形式返回 key、secret 的值。
mPaaS SDK 版本 ≥ 10.1.60 開始,微信 SDK 已經更新到 1.8.6.1,需要進行 Universal Link 的校驗,所以在配置密鑰的同時需要配置對應的 Universal Link。
-(void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary *configDic = @{
@"weixin" : @{@"key":@"xxxxxxxxxxxxxx", @"secret":@"xxxxxxxxxxxxxxx", @"universalLink":@"https://mpaas.example.com/"},
@"weibo" : @{@"key":@"xxxxxxxxxx", @"secret":@"xxxxxxxxxxxxxxxxx"},
@"qq" : @{@"key":@"xxxxxxxxx", @"secret":@"xxxxxxxxxx"},
@"alipay": @{@"key":@"xxxxxxxxxxxxx"},/*該 key 對應的 bundleID 為"com.alipay.share.demo", 如需用來測試,請修改為自己申請的 key 或修改 bundleID 為"com.alipay.share.demo"*/
@"dingTalk": @{@"key":@"xxxxxxxxxxxxxxxx"}};
[APSKClient registerAPPConfig:configDic];
}
不使用 mPaaS 框架時
在接入應用的啟動方法中注冊密鑰。
mPaaS SDK 版本 ≥ 10.1.60 開始,微信 SDK 已經更新到 1.8.6.1,需要進行 Universal Link 的校驗,所以在配置密鑰的同時需要配置對應的 Universal Link。
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary *dic = @{
@"weixin" : @{@"key":@"xxxxxxxxxxxxxx", @"secret":@"xxxxxxxxxxxxxxx",@"universalLink":@"https://mpaas.example.com/"},
@"weibo" : @{@"key":@"xxxxxxxxxx", @"secret":@"xxxxxxxxxxxxxxx"},
@"qq" : @{@"key":@"xxxxxxxxxx", @"secret":@"xxxxxxxxxxxxxx"},
@"alipay" : @{@"key":@"xxxxxxxxxxxxxxxx"},/*該 key 對應的 bundleID 為"com.alipay.share.demo", 如需用來測試,請修改為自己申請的 key 或修改 bundleID 為"com.alipay.share.demo"*/
@"dingTalk": @{@"key":@"xxxxxxxxxxxxxxxxxxx"}};
[APSKClient registerAPPConfig:dic];
}
基礎功能
分享
喚起分享選擇面板
在喚起分享面板時可以指定需要顯示的渠道。
NSArray *channelArr = @[kAPSKChannelQQ, kAPSKChannelLaiwangContacts, kAPSKChannelLaiwangTimeline, kAPSKChannelWeibo, kAPSKChannelWeixin, kAPSKChannelCopyLink,kAPSKChannelDingTalkSession];
self.launchPad = [[APSKLaunchpad alloc] initWithChannels:channelArr sort:NO];
self.launchPad.delegate = self;
[self.launchPad showForView:[[UIApplication sharedApplication] keyWindow] animated:YES];
完成分享操作
在 @protocol APSKLaunchpadDelegate
的 sharingLaunchpad
回調中執行分享操作。
-(void)sharingLaunchpad:(APSKLaunchpad *)launchpad didSelectChannel:(NSString *)channelName
{
[self shareUrl:channelName];
[self.launchPad dismissAnimated:YES];
}
- (void)shareUrl:(NSString*)channelName
{
//生成數據,調用對應渠道分享
APSKMessage *message = [[APSKMessage alloc] init];
message.contentType = @"url";//類型分"text","image", "url"三種
message.content = [NSURL URLWithString:@"www.example.com.cn"];
message.icon = [UIImage imageNamed:@"1"];
message.title = @"標題";
message.desc = @"描述";
APSKClient *client = [[APSKClient alloc] init];
[client shareMessage:message toChannel:channelName completionBlock:^(NSError *error, NSDictionary *userInfo) {
//userInfo 為擴展信息
if(!error)
{
//your logistic
}
NSLog(@"error = %@", error);
}];
}
從渠道應用跳回的處理
當使用 mPaaS 框架時不需要處理,會由框架負責。
當不使用 mPaaS 框架時參照下列代碼進行處理。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
//加入分享成功后,從渠道 APP 回到源 APP 的處理
BOOL ret;
ret = [APSKClient handleOpenURL:url];
return ret;
}
開放服務
通過第三方開發服務接口,可以調用第三方渠道分享 SDK 中提供的其他開放服務。目前支持的開放服務有 微信一次性訂閱消息和 拉起微信小程序。
請求開放服務的操作流程
請求開放服務的操作流程如下:
// 1. 創建請求對象
APSKOpenServiceRequest *req = [APSKOpenServiceRequest new];
// 2. 設置請求類型
req.requestType = APSKOpenServiceRequestTypeLaunchMini;
// 3. 設置所需參數
MPSKLaunchMiniProgramParam *param = [[MPSKLaunchMiniProgramParam alloc] init];
param.userName = @"xxxxxxxx";
param.path = @"/index.html";
param.miniProgramType = MPSKWXMiniProgramTypeTest;
req.param = param;
// 4. 創建 client 對象
APSKClient *client = [APSKClient new];
// 5. 請求服務
[client requestOpenService:req toChannel:kAPSKChannelWeixin completionBlock:^(NSError *error, NSDictionary *userInfo) {
// 6. 回調
if (error) {
NSLog(@"%@", error);
}
}];
從渠道應用跳回的處理
從渠道應用跳回后,需要根據客戶端是否采用 mPaaS 框架進行不同的處理。
如果客戶端使用了 mPaaS 框架,在跳回后框架會負責處理。
如果客戶端沒有使用 mPaaS 框架,請您參照下列代碼進行跳回后的處理。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// 從渠道 APP 回到源 APP 的處理
BOOL ret;
ret = [APSKClient handleOpenURL:url];
return ret;
}