// // QQShareManager.h // msext // // Created on 2025/06/15. // Copyright © 2025年. All rights reserved. // #import #import NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, QQShareType) { QQShareTypeText, // 纯文本分享 QQShareTypeImage, // 图片分享 QQShareTypeNews, // 新闻/网页分享 QQShareTypeAudio, // 音频分享 QQShareTypeVideo // 视频分享 }; @interface QQShareManager : NSObject /** * 检查QQ是否已安装 * @return BOOL 是否已安装QQ */ + (BOOL)isQQInstalled; /** * 验证QQ AppID配置是否正确 * @return BOOL AppID是否有效配置 */ + (BOOL)validateQQAppIDConfiguration; /** * 获取当前配置的QQ AppID * @return NSString 当前的QQ AppID,如果未配置返回nil */ + (NSString * _Nullable)getCurrentQQAppID; /** * 分享到QQ好友 * @param type 分享类型 * @param title 标题 * @param description 描述 * @param thumbImage 缩略图 * @param url 链接URL * @param image 图片(仅图片分享时使用) * @param completion 完成回调 */ + (void)shareToQQFriend:(QQShareType)type title:(NSString * _Nullable)title description:(NSString * _Nullable)description thumbImage:(UIImage * _Nullable)thumbImage url:(NSString * _Nullable)url image:(UIImage * _Nullable)image completion:(void(^_Nullable)(BOOL success))completion; /** * 分享到QQ空间 * @param type 分享类型 * @param title 标题 * @param description 描述 * @param thumbImage 缩略图 * @param url 链接URL * @param images 图片数组(可多张图片) * @param completion 完成回调 */ + (void)shareToQZone:(QQShareType)type title:(NSString * _Nullable)title description:(NSString * _Nullable)description thumbImage:(UIImage * _Nullable)thumbImage url:(NSString * _Nullable)url images:(NSArray * _Nullable)images completion:(void(^_Nullable)(BOOL success))completion; /** * 简化版QQ分享到好友(解决900101错误) * 使用最基础的参数格式,避免复杂参数导致的错误 * @param title 标题 * @param description 描述 * @param url 链接URL(可为nil) * @param completion 完成回调 */ + (void)simpleShareToQQFriend:(NSString * _Nullable)title description:(NSString * _Nullable)description url:(NSString * _Nullable)url completion:(void(^_Nullable)(BOOL success))completion; /** * 使用系统分享面板进行QQ分享(最可靠的方案) * @param title 分享标题 * @param description 分享描述 * @param url 分享链接 * @param viewController 用于呈现分享面板的视图控制器 * @param completion 分享完成回调 */ + (void)shareWithSystemShare:(NSString * _Nullable)title description:(NSString * _Nullable)description url:(NSString * _Nullable)url fromViewController:(UIViewController *)viewController completion:(void (^ _Nullable)(BOOL success))completion; /** * 使用系统分享面板进行QQ分享(自动获取顶层视图控制器) * @param title 分享标题 * @param description 分享描述 * @param url 分享链接 * @param completion 分享完成回调 */ + (void)shareWithSystemShareAuto:(NSString * _Nullable)title description:(NSString * _Nullable)description url:(NSString * _Nullable)url completion:(void (^ _Nullable)(BOOL success))completion; /** * 尝试强制弹出QQ会话选择列表 * 使用多种URL格式尝试打开QQ的好友选择界面 * @param completion 完成回调 */ + (void)forceOpenQQSessionSelector:(void(^_Nullable)(BOOL success))completion; /** * 使用多种方式尝试QQ分享 * 按优先级尝试不同的QQ分享方式,直到找到有效的 * @param title 标题 * @param description 描述 * @param completion 完成回调 */ + (void)tryMultipleQQShareMethods:(NSString * _Nullable)title description:(NSString * _Nullable)description completion:(void(^_Nullable)(BOOL success))completion; /** * 处理从QQ返回的URL * 需要在 AppDelegate 的 application:openURL:options: 方法中调用 */ + (BOOL)handleOpenURL:(NSURL *)url; /** * 验证和修复URL格式 * @param url 原始URL字符串 * @return 修复后的有效URL,如果无法修复返回nil */ + (NSString * _Nullable)validateAndFixURL:(NSString * _Nullable)url; /** * 获取应用启动图用作分享缩略图(已弃用,建议使用getAppIcon) * @return 启动图UIImage对象 */ + (UIImage * _Nullable)getAppLaunchImage; /** * 获取应用桌面图标用作分享缩略图 * @return 应用桌面图标UIImage对象 */ + (UIImage * _Nullable)getAppIcon; /** * 检查是否可以安全呈现系统分享面板 * @return BOOL 是否可以安全呈现 */ + (BOOL)canSafelyPresentSharePanel; /** * 使用系统分享面板进行QQ分享(传递完整ShareContent对象) * 支持根据type字段自动选择分享类型: * - type=2:截图分享(包含屏幕截图+文字说明) * - 其他:纯文本分享(文字+链接+应用图标) * @param shareContent 完整的分享内容对象,需包含title、desc、webpageUrl、type字段 * @param completion 分享完成回调 */ + (void)shareWithSystemShareContent:(id)shareContent completion:(void (^ _Nullable)(BOOL success))completion; @end NS_ASSUME_NONNULL_END