mirror of
https://github.com/RxReader/tencent_kit.git
synced 2025-05-19 16:26:08 +08:00
添加文本分享
This commit is contained in:
@ -15,49 +15,64 @@ def parse_KV_file(file, separator='=')
|
||||
if !File.exists? file_abs_path
|
||||
return [];
|
||||
end
|
||||
pods_ary = []
|
||||
generated_key_values = {}
|
||||
skip_line_start_symbols = ["#", "/"]
|
||||
File.foreach(file_abs_path) { |line|
|
||||
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
|
||||
plugin = line.split(pattern=separator)
|
||||
if plugin.length == 2
|
||||
podname = plugin[0].strip()
|
||||
path = plugin[1].strip()
|
||||
podpath = File.expand_path("#{path}", file_abs_path)
|
||||
pods_ary.push({:name => podname, :path => podpath});
|
||||
else
|
||||
puts "Invalid plugin specification: #{line}"
|
||||
end
|
||||
}
|
||||
return pods_ary
|
||||
File.foreach(file_abs_path) do |line|
|
||||
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
|
||||
plugin = line.split(pattern=separator)
|
||||
if plugin.length == 2
|
||||
podname = plugin[0].strip()
|
||||
path = plugin[1].strip()
|
||||
podpath = File.expand_path("#{path}", file_abs_path)
|
||||
generated_key_values[podname] = podpath
|
||||
else
|
||||
puts "Invalid plugin specification: #{line}"
|
||||
end
|
||||
end
|
||||
generated_key_values
|
||||
end
|
||||
|
||||
target 'Runner' do
|
||||
# Flutter Pod
|
||||
|
||||
copied_flutter_dir = File.join(__dir__, 'Flutter')
|
||||
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
|
||||
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
|
||||
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
|
||||
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
|
||||
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
|
||||
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
|
||||
|
||||
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
|
||||
unless File.exist?(generated_xcode_build_settings_path)
|
||||
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
|
||||
end
|
||||
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
|
||||
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
|
||||
|
||||
unless File.exist?(copied_framework_path)
|
||||
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
|
||||
end
|
||||
unless File.exist?(copied_podspec_path)
|
||||
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
|
||||
end
|
||||
end
|
||||
|
||||
# Keep pod path relative so it can be checked into Podfile.lock.
|
||||
pod 'Flutter', :path => 'Flutter'
|
||||
|
||||
# Plugin Pods
|
||||
|
||||
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
|
||||
# referring to absolute paths on developers' machines.
|
||||
system('rm -rf .symlinks')
|
||||
system('mkdir -p .symlinks/plugins')
|
||||
|
||||
# Flutter Pods
|
||||
generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
|
||||
if generated_xcode_build_settings.empty?
|
||||
puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first."
|
||||
end
|
||||
generated_xcode_build_settings.map { |p|
|
||||
if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
|
||||
symlink = File.join('.symlinks', 'flutter')
|
||||
File.symlink(File.dirname(p[:path]), symlink)
|
||||
pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
|
||||
end
|
||||
}
|
||||
|
||||
# Plugin Pods
|
||||
plugin_pods = parse_KV_file('../.flutter-plugins')
|
||||
plugin_pods.map { |p|
|
||||
symlink = File.join('.symlinks', 'plugins', p[:name])
|
||||
File.symlink(p[:path], symlink)
|
||||
pod p[:name], :path => File.join(symlink, 'ios')
|
||||
}
|
||||
plugin_pods.each do |name, path|
|
||||
symlink = File.join('.symlinks', 'plugins', name)
|
||||
File.symlink(path, symlink)
|
||||
pod name, :path => File.join(symlink, 'ios')
|
||||
end
|
||||
end
|
||||
|
||||
# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
|
||||
|
@ -2,17 +2,17 @@ PODS:
|
||||
- Flutter (1.0.0)
|
||||
- path_provider (0.0.1):
|
||||
- Flutter
|
||||
- tencent_kit (1.0.2):
|
||||
- tencent_kit (1.0.4):
|
||||
- Flutter
|
||||
|
||||
DEPENDENCIES:
|
||||
- Flutter (from `.symlinks/flutter/ios`)
|
||||
- Flutter (from `Flutter`)
|
||||
- path_provider (from `.symlinks/plugins/path_provider/ios`)
|
||||
- tencent_kit (from `.symlinks/plugins/tencent_kit/ios`)
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
Flutter:
|
||||
:path: ".symlinks/flutter/ios"
|
||||
:path: Flutter
|
||||
path_provider:
|
||||
:path: ".symlinks/plugins/path_provider/ios"
|
||||
tencent_kit:
|
||||
@ -21,8 +21,8 @@ EXTERNAL SOURCES:
|
||||
SPEC CHECKSUMS:
|
||||
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
|
||||
path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d
|
||||
tencent_kit: b057e0ae9d0c9b5d02c893b3e3ac602200cb733d
|
||||
tencent_kit: 0712377066f9a937c0de9ce468cbae18b3688f47
|
||||
|
||||
PODFILE CHECKSUM: 7fb83752f59ead6285236625b82473f90b1cb932
|
||||
PODFILE CHECKSUM: 3dbe063e9c90a5d7c9e4e76e70a821b9e2c1d271
|
||||
|
||||
COCOAPODS: 1.8.4
|
||||
|
@ -127,7 +127,7 @@ class _HomeState extends State<Home> {
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('分享文字'),
|
||||
title: const Text('分享说说'),
|
||||
onTap: () {
|
||||
_tencent.shareMood(
|
||||
scene: TencentScene.SCENE_QZONE,
|
||||
@ -135,6 +135,15 @@ class _HomeState extends State<Home> {
|
||||
);
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('文本分享'),
|
||||
onTap: () {
|
||||
_tencent.shareText(
|
||||
scene: TencentScene.SCENE_QZONE,
|
||||
summary: '分享测试',
|
||||
);
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('图片分享'),
|
||||
onTap: () async {
|
||||
@ -166,7 +175,7 @@ class _HomeState extends State<Home> {
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('分享链接'),
|
||||
title: const Text('网页分享'),
|
||||
onTap: () {
|
||||
_tencent.shareWebpage(
|
||||
scene: TencentScene.SCENE_QQ,
|
||||
|
@ -1,5 +1,6 @@
|
||||
name: tencent_kit_example
|
||||
description: Demonstrates how to use the tencent_kit plugin.
|
||||
version: 1.0.0+1000
|
||||
publish_to: 'none'
|
||||
|
||||
environment:
|
||||
|
@ -41,6 +41,7 @@ static NSString *const METHOD_ISINSTALLED = @"isInstalled";
|
||||
static NSString *const METHOD_LOGIN = @"login";
|
||||
static NSString *const METHOD_LOGOUT = @"logout";
|
||||
static NSString *const METHOD_SHAREMOOD = @"shareMood";
|
||||
static NSString *const METHOD_SHARETEXT = @"shareText";
|
||||
static NSString *const METHOD_SHAREIMAGE = @"shareImage";
|
||||
static NSString *const METHOD_SHAREMUSIC = @"shareMusic";
|
||||
static NSString *const METHOD_SHAREWEBPAGE = @"shareWebpage";
|
||||
@ -102,6 +103,8 @@ static NSString *const SCHEME_FILE = @"file";
|
||||
[self logout:call result:result];
|
||||
} else if ([METHOD_SHAREMOOD isEqualToString:call.method]) {
|
||||
[self shareMood:call result:result];
|
||||
} else if ([METHOD_SHARETEXT isEqualToString:call.method]) {
|
||||
[self shareText:call result:result];
|
||||
} else if ([METHOD_SHAREIMAGE isEqualToString:call.method]) {
|
||||
[self shareImage:call result:result];
|
||||
} else if ([METHOD_SHAREMUSIC isEqualToString:call.method]) {
|
||||
@ -163,6 +166,19 @@ static NSString *const SCHEME_FILE = @"file";
|
||||
result(nil);
|
||||
}
|
||||
|
||||
- (void)shareText:(FlutterMethodCall *)call result:(FlutterResult)result {
|
||||
NSNumber *scene = call.arguments[ARGUMENT_KEY_SCENE];
|
||||
NSString *summary = call.arguments[ARGUMENT_KEY_SUMMARY];
|
||||
QQApiTextObject *object = [QQApiTextObject objectWithText:summary];
|
||||
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:object];
|
||||
if (scene.intValue == SCENE_QQ) {
|
||||
[QQApiInterface sendReq:req];
|
||||
} else if (scene.intValue == SCENE_QZONE) {
|
||||
[QQApiInterface SendReqToQZone:req];
|
||||
}
|
||||
result(nil);
|
||||
}
|
||||
|
||||
- (void)shareImage:(FlutterMethodCall *)call result:(FlutterResult)result {
|
||||
NSNumber *scene = call.arguments[ARGUMENT_KEY_SCENE];
|
||||
if (scene.intValue == SCENE_QQ) {
|
||||
|
@ -22,6 +22,7 @@ class Tencent {
|
||||
static const String _METHOD_LOGIN = 'login';
|
||||
static const String _METHOD_LOGOUT = 'logout';
|
||||
static const String _METHOD_SHAREMOOD = 'shareMood';
|
||||
static const String _METHOD_SHARETEXT = 'shareText';
|
||||
static const String _METHOD_SHAREIMAGE = 'shareImage';
|
||||
static const String _METHOD_SHAREMUSIC = 'shareMusic';
|
||||
static const String _METHOD_SHAREWEBPAGE = 'shareWebpage';
|
||||
@ -217,6 +218,19 @@ class Tencent {
|
||||
return _channel.invokeMethod(_METHOD_SHAREMOOD, arguments);
|
||||
}
|
||||
|
||||
/// 分享 - 文本
|
||||
Future<void> shareText({
|
||||
@required int scene,
|
||||
@required String summary,
|
||||
}) {
|
||||
assert(summary != null && summary.isNotEmpty);
|
||||
final Map<String, dynamic> arguments = <String, dynamic>{
|
||||
_ARGUMENT_KEY_SCENE: scene,
|
||||
_ARGUMENT_KEY_SUMMARY: summary,
|
||||
};
|
||||
return _channel.invokeMethod(_METHOD_SHAREMOOD, arguments);
|
||||
}
|
||||
|
||||
/// 分享 - 图片
|
||||
Future<void> shareImage({
|
||||
@required int scene,
|
||||
|
Reference in New Issue
Block a user