اذهب إلى المحتوى

السؤال

نشر

تحيه طيبه للجميع

لدي استفسار لو تكرمتم لو احد لديه فكره عن الامر

هل سياسة تطبيق الواتساب تمنعنا من مشاركة الصور بشكل مباشر من تطبيقاتنا من خلال نظام IOS  وتطبيق فلاتر الى الواتساب بشكل مباشر؟

قمت باستعمال هذا المكتبة :

https://pub.dev/packages/flutter_share

في نظام الاندرويد مشاركة الصور تنجح من خلال تطبيق فلاتر وارسالها بصورة مباشرة او مشاركتها مع تطبيق الواتساب

ولكن في نظام iOS  لم ينجح الامر كل ما يذهب هو نص فقط

قمت بتجربة مشاركة الصور على نظام IOS  مع تطبيقات مختلفة مثل تويتر وقد نجح الامر اذن هل سياسة الواتساب تمنع ذلك؟ او احتاج الى وضع صلاحيات محدده لفعل ذلك؟

 

Recommended Posts

  • 1
نشر

حاولت التأكد من المشكلة وتبين أنها ليست بسبب السياسة للتطبيق، لأنه في تلك الحالة يجب أن تطبق على أندرويد أيضا.

تبين أنها كانت تعمل حتى قامت واتساب بتحديث API خاصتهم، أي أنها مشكلة برمجية وفي واتساب IOS فقط. أي ملف صورة مع نص.يمكن ان تعمل المشاركة لواتساب عن طريق الخاصية التالية باستخدام bytes:

Share.file(

          title,

          "$name.png",

          bytes,

          "image/png",

          // text: title,
)

        );

ويمكنك مراجعة واتساب API هنا

أي الحل وضع زر مشاركة خاص بالواتساب فقط لبيئة IOS والتي يمكنك اختبارها ضمن شرط if بالاستعانة ب مزوظ platform من فلاتر

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 13:20 قال Wael Aljamal:

حاولت التأكد من المشكلة وتبين أنها ليست بسبب السياسة للتطبيق، لأنه في تلك الحالة يجب أن تطبق على أندرويد أيضا.

تبين أنها كانت تعمل حتى قامت واتساب بتحديث API خاصتهم، أي أنها مشكلة برمجية وفي واتساب IOS فقط. أي ملف صورة مع نص.

يمكن ان تعمل المشاركة لواتساب عن طريق الخاصية التالية باستخدام bytes:

)Share.file(

          title,

          "$name.png",

          bytes,

          "image/png",

          // text: title,

        );

ويمكنك مراجعة واتساب API هنا

أي الحل وضع زر مشاركة خاص بالواتساب فقط لبيئة IOS والتي يمكنك اختبارها ضمن شرط if بالاستعانة ب مزوظ platform من فلاتر

أظهر المزيد  

اهلا بك اخي الكريم نعم هذا الكلام صحيح لنني قمت بتحقق ايضا من ذلك لو وضعت صوره فقط هو يعمل ولو وضعت نص لا يعمل

مساعده لو تكرمت احتاج منك كيف يمكن تطبيق هذا النص البرمجي على الكود التالي: اعذرني ولكني لم اعرف كيفية تطبيقه 

var urls='https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png';
                                    final url=Uri.parse(urls);
                                    final res =await http.get(url);
                                    final bytes =res.bodyBytes;
                                    final temp = await getTemporaryDirectory();
                                    final path ='${temp.path}/imageToShare.jpg';
                                    File(path).writeAsBytesSync(bytes);
                                    Share.shareFiles([path], text: 'Great picture');

 

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 16:06 قال مروان مروان3:

لم اعلم طريقة كتابة الكود او كيف يمكن صيغته ليعمل مع الكود الذي لدي 

أظهر المزيد  

هه الشيفرة تقوم بتحميل ملف صورةمن رابط انترنت أو مخدم محلي، ثم تكتب الملف على التخزين الخاص بالتطبيق ضمن الهاتف، ثم تشارك المسار.

تحتاج للمتغير path أن يكون عام للجميع اماباقي الشيفرة تستخدم ضمن دالة تحميل الصورة.

لكي لا تعبث بالشيفرة القديمة أضف هذه الشيفرة كما هي في دالة function مستقلة، واربطها مع زر مشاركة.

الشيفرةةالسابقة التي ارفقادتعا لك والتي تمرر bytes ل share أي ملف ثنائي بدل المسار أي مرر لها هذه مباشرة

  بتاريخ On 19‏/2‏/2022 at 15:17 قال مروان مروان3:

bytes =res.bodyBytes

أظهر المزيد  

 

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 16:11 قال Wael Aljamal:

هه الشيفرة تقوم بتحميل ملف صورةمن رابط انترنت أو مخدم محلي، ثم تكتب الملف على التخزين الخاص بالتطبيق ضمن الهاتف، ثم تشارك المسار.

تحتاج للمتغير path أن يكون عام للجميع اماباقي الشيفرة تستخدم ضمن دالة تحميل الصورة.

لكي لا تعبث بالشيفرة القديمة أضف هذه الشيفرة كما هي في دالة function مستقلة، واربطها مع زر مشاركة.

الشيفرةةالسابقة التي ارفقادتعا لك والتي تمرر bytes ل share أي ملف ثنائي بدل المسار أي مرر لها هذه مباشرة

 

أظهر المزيد  

اهلا اخي الكريم اعتذر لم اشرح جيدا المقصد

اعلم طبيعة عمل الشيفرة التي ارفقتها لك ولكني اقصد لم اعلم الطريقة لكيفية إضافة الشيفرة التي أرسلتها انت مع الشيفرة التي ارفقتها انا القديمة 

 

قمت بعمل دالة للكود ليكون بشكل مستقل كالتالي:

  Future ShareImage()async{
    var urls='https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png';
    final url=Uri.parse(urls);
    final res =await http.get(url);
    final bytes =res.bodyBytes;
    final temp = await getTemporaryDirectory();
    final path ='${temp.path}/imageToShare.jpg';
    File(path).writeAsBytesSync(bytes);

    Share.shareFiles([path],text:'Great picture');
  }

 

ولكني هنا واجهة المشكلة :

)Share.file(

          title,

          "$name.png",

          bytes,

          "image/png",

          // text: title,

        

 

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 16:19 قال مروان مروان3:

ولكني هنا واجهة المشكلة :

أظهر المزيد  

سوف تصبح هكذا:

Future ShareImage()async{
    var urls='https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png';
	final name = 'Image_created_with_a_mobile_phone';
    final url=Uri.parse(urls);
    final res =await http.get(url);
    final bytes =res.bodyBytes;      // هذه

    Share.file(
              title,
              "$name",
              bytes,             // هنا
              "image/png",
    )

}


/*
	final temp = await getTemporaryDirectory();
    final path ='${temp.path}/imageToShare.jpg';
    File(path).writeAsBytesSync(bytes);

//    Share.shareFiles([path],text:'Great picture');
*/

جرب هذه، هنا مشاركة ملف ثنائي بصيفة binary - bytes

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 16:24 قال Wael Aljamal:

سوف تصبح هكذا:

Future ShareImage()async{
    var urls='https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png';
	final name = 'Image_created_with_a_mobile_phone';
    final url=Uri.parse(urls);
    final res =await http.get(url);
    final bytes =res.bodyBytes;      // هذه

    Share.file(
              title,
              "$name",
              bytes,             // هنا
              "image/png",
    )

}


/*
	final temp = await getTemporaryDirectory();
    final path ='${temp.path}/imageToShare.jpg';
    File(path).writeAsBytesSync(bytes);

//    Share.shareFiles([path],text:'Great picture');
*/

جرب هذه، هنا مشاركة ملف ثنائي بصيفة binary - bytes

أظهر المزيد  

اهلا اخي بنسبة الى share.file هنا هل تستعمل مكتبة مختلفة ؟

كلمة file  غير معرفة لدي ولا تقبل جلب مكتبة معينه 

شاهدة صورة:

62111b89a5a5d_Screenshot2022-02-19203045.thumb.png.ae88d9114e22a84aea015e20e4dec07c.png

 

 

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 16:35 قال Wael Aljamal:

أعتقد هي shareFile يوجد مشاركة ملف أو ملفات مع إضافة S

أظهر المزيد  

نعم اخي انت قصدك بشكل التالي:

Share.shareFiles();

ولكن هنا المشكلة ان هذا السطر لا يقبل bytes

Positional arguments must occur before named arguments. The argument type 'Uint8List' can't be assigned to the parameter type 'List<String>'. 

 

هذا اخر نتيجة :

62111d036428d_Screenshot2022-02-19203800.thumb.png.ba2eb7980b62995e9872d767d3883f62.png

  • 1
نشر
  بتاريخ On 19‏/2‏/2022 at 16:38 قال مروان مروان3:

ولكن هنا المشكلة ان هذا السطر لا يقبل bytes

أظهر المزيد  

أي مكتية تستخدم؟ share plus أم flutter share؟ لأنك طرحت سؤالين و كل مرة مكتبة،

لا مشكلة من استخدام المكتيتين سوياً، لكن اعط المكتية اسم مستعار باستعمال as عند التضمين.

 

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 16:43 قال Wael Aljamal:

أي مكتية تستخدم؟ share plus أم flutter share؟ لأنك طرحت سؤالين و كل مرة مكتبة،

لا مشكلة من استخدام المكتيتين سوياً، لكن اعط المكتية اسم مستعار باستعمال as عند التضمين.

 

أظهر المزيد  

اهلا اخي مكتبة share plus 

  • 1
نشر
  بتاريخ On 19‏/2‏/2022 at 16:47 قال مروان مروان3:

اهلا اخي مكتبة share plus 

أظهر المزيد  

حاول عدم استخدام الخاصية text 

بشكل عام، نحتاج لمكتبة تدعم whatsapp لنظام IOS  وعند بحثي رأيت هذا التعليق، الخاصية الاختيارية text سبب هذه المشكلة له و قد عمل البرنامج عنده بعد إزالتها.

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 17:40 قال Wael Aljamal:

حاول عدم استخدام الخاصية text 

بشكل عام، نحتاج لمكتبة تدعم whatsapp لنظام IOS  وعند بحثي رأيت هذا التعليق، الخاصية الاختيارية text سبب هذه المشكلة له و قد عمل البرنامج عنده بعد إزالتها.

أظهر المزيد  

كل الشكر لك اخي الكريم 

فعلا المشكلة ليس لها حل فعلي حتى الان وعلى ما يبدو ان مطور المكتبة يعلم بذلك ولكن قد يحتاج الى بعض الوقت حتى يتم حل المشكلة ( قمت بتخلي عن الصورة في الواتساب بنسبة الى نظام IOS حتى تحديث المكتبة)

اكرر شكري لك اخي الكريم

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 21:12 قال مروان مروان3:

كل الشكر لك اخي الكريم 

فعلا المشكلة ليس لها حل فعلي حتى الان وعلى ما يبدو ان مطور المكتبة يعلم بذلك ولكن قد يحتاج الى بعض الوقت حتى يتم حل المشكلة ( قمت بتخلي عن الصورة في الواتساب بنسبة الى نظام IOS حتى تحديث المكتبة)

اكرر شكري لك اخي الكريم

أظهر المزيد  

إن كانت المشكلة في تمرير كل من العنوان و الصورة بنفس الوقت (يمكن فقط تمرير الصورة) يمكننا وضع الشرط التالي لنضمن على الأقل مشاركة الصورة

import 'dart:io' show Platform;

if (Platform.isAndroid) {
  Share.shareFiles([path], text: 'Great picture');

} else if (Platform.isIOS) {
  Share.shareFiles([path]);
}

 

  • 0
نشر
  بتاريخ On 19‏/2‏/2022 at 21:18 قال Wael Aljamal:

إن كانت المشكلة في تمرير كل من العنوان و الصورة بنفس الوقت (يمكن فقط تمرير الصورة) يمكننا وضع الشرط التالي لنضمن على الأقل مشاركة الصورة

import 'dart:io' show Platform;

if (Platform.isAndroid) {
  Share.shareFiles([path], text: 'Great picture');

} else if (Platform.isIOS) {
  Share.shareFiles([path]);
}

 

أظهر المزيد  

اهلا بك اخي الكريم

بيكون فيه مشكلة هنا سوف يتم ارسال الصورة فعلا ولكن بدون الوصف او النص بشكل عام كذا البوست رح يكون مبهم

 

بعده انك ترسل نص لحاله افضل من صوره لحالها 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...