我正在尝试从我的 Flutter 应用程序在 LinkedIn 上分享网页链接,我为此创建了以下功能:
void _shareOnLinkedIn() async {
final String linkedInShareUrl =
"https://stgappnavigator.parkstreet.com/marketplace/details/${_catalogStore.summaryInfo?.data?[widget.productIndex].id}";
final String encodedUrl = Uri.encodeFull(linkedInShareUrl);
final String linkedInUrl = Const.linkedInShareUrl + "=$encodedUrl";
if (await canLaunchUrl(Uri.parse(linkedInUrl))) {
await launchUrl(Uri.parse(linkedInUrl));
} else {
ToastUtil.show(
ToastDecorator(isSuccess: false, msg: "something_went_wrong".tr()),
context,
gravity: ToastGravity.bottom);
}
}
现在,它工作正常,但我在 LinkedIn 上得到的结果在网络和移动设备上有所不同……即从网络和移动设备共享时,它共享链接的相同字符串值,但在 LinkedIn 上看起来不同,如下所示:
蓝色文本是从移动设备共享的结果,第二个是从网络共享的相同链接,但看起来不同。
链接值是相同的,尽管为什么它在 LinkedIn 上看起来不同。
请指导。
请注意,
linkedInShareUrl
变量的值为:
https://www.linkedin.com/sharing/share-offsite/?url
LinkedIn 不提供用于以编程方式发布内容的直接 API 访问,因此在 LinkedIn 上共享通常需要打开带有预填充消息的 LinkedIn 共享页面。不幸的是,截至 2022 年 1 月我的最后一次知识更新,LinkedIn API 不支持通过移动应用程序直接共享或发布内容。
当您使用 URL 打开 LinkedIn 共享页面时,LinkedIn 的网站将处理实际的共享过程。作为帖子或直接消息共享的选项由 LinkedIn 的 Web 界面控制,因此,在使用移动应用程序时它们可能不可用。
以下是使用 url_launcher 包打开 LinkedIn 共享页面的修改后的代码:
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Share to LinkedIn Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// Define the content to share
String content = 'Check out this awesome app! $websiteUrl';
// Encode the content for the LinkedIn sharing URL
String encodedContent = Uri.encodeComponent(content);
// LinkedIn sharing URL
String linkedInUrl = 'https://www.linkedin.com/shareArticle?mini=true&url=$encodedContent';
// Open the LinkedIn sharing URL
launch(linkedInUrl);
},
child: Text('Share to LinkedIn'),
),
),
),
);
}
}