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

السؤال

نشر

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

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

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

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

https://pub.dev/packages/flutter_share

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

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

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

 

Recommended Posts

  • 1
نشر
بتاريخ 51 دقائق مضت قال مروان مروان3:

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

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

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

  • 1
نشر

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

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

Share.file(

          title,

          "$name.png",

          bytes,

          "image/png",

          // text: title,
)

        );

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

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

  • 1
نشر
بتاريخ الآن قال مروان مروان3:

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

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

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

 

  • 0
نشر
بتاريخ 1 ساعة قال 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
نشر
بتاريخ الآن قال مروان مروان3:

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

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

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

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

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

بتاريخ 54 دقائق مضت قال مروان مروان3:

bytes =res.bodyBytes

 

  • 0
نشر
بتاريخ 4 دقائق مضت قال 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
نشر
بتاريخ 2 دقائق مضت قال مروان مروان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
نشر
بتاريخ 6 دقائق مضت قال 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
نشر
بتاريخ الآن قال 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

  • 0
نشر
بتاريخ 3 دقائق مضت قال Wael Aljamal:

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

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

 

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

  • 0
نشر
بتاريخ 3 ساعات قال Wael Aljamal:

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

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

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

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

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

  • 0
نشر
بتاريخ 3 دقائق مضت قال مروان مروان3:

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

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

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

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

import 'dart:io' show Platform;

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

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

 

  • 0
نشر
بتاريخ 11 ساعات قال 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...