بالمقابل لو اخذنا التطبيق على منصة ios رح يظهر لنا انه تكون مشكله بحسب كلام موقع فلاتر ف منصة ios لا تدعم عمل خاصية registerPeriodicTask ولو حذفت هذا السطر ورجعنا لنظام اندرويد ما رح يعمل على الاندرويد
كيف ممكن نحل هذا المشكلة ؟ بحيث انه ما يتعرض في المنصتين
اما المشكلة الثانية لو حذفنا registerPeriodicTask عشان نجعل workmanager لزم نذهب الى xcode ثم من قائمة Debug → Simulate Background Fetch حتى يعمل هذا مشكلة كيف نجعله يعمل بشكل مستمر بدون هذا الامر ؟ ايضا مع هذا الطريقة يعمل لمرة واحدة فقط ولا يعود يعمل بعدها ما لم اعمل نفس الخطوه من جديد Debug → Simulate Background Fetch
الكود المستخدم لدي كامل:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:workmanager/workmanager.dart';
import 'package:background_location/notification.dart' as notif;
const fetchBackground = "fetchBackground";
/*
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async {
switch (task) {
case fetchBackground:
//Geolocator geoLocator = Geolocator()..forceAndroidLocationManager = true;
Position userLocation = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
notif.Notification notification = new notif.Notification();
notification.showNotificationWithoutSound(userLocation);
break;
}
return Future.value(true);
});
}
*/
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async{
switch (task) {
case Workmanager.iOSBackgroundTask:
stderr.writeln("The iOS background fetch was triggered");
Position userLocation = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
notif.Notification notification = new notif.Notification();
notification.showNotificationWithoutSound(userLocation);
break;
}
bool success = true;
return Future.value(success);
});
}
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
// We don't need it anymore since it will be executed in background
//this._getUserPosition();
Workmanager.initialize(
callbackDispatcher,
isInDebugMode: true,
);
// Workmanager.iOSBackgroundTask;
// Workmanager.registerPeriodicTask(
// // "1",
// // fetchBackground,
// // frequency: Duration(minutes: 30),
// //);
// callbackDispatcher();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
"",
style: Theme.of(context).textTheme.display1,
),
],
),
),
);
}
}
السؤال
Flutter Dev
السلام عليكم ورحمة الله وبركاته
تحيه طيبه للجميع .
قمت بتطبيق عمل الاضافة workmanager flutter لجعل التطبيق يعمل في الخلفية التطبيق شغال على المنصتين اندرويد وايفون ولكن توجد مشكلة
على الاندرويد يجب اضافة السطر البرمجي التالي حتى يعمل كل 15 دقيقة في خلفية التطبيق:
@override void initState() { super.initState(); Workmanager.registerPeriodicTask( "1", fetchBackground, frequency: Duration(minutes: 15), ); }
بالمقابل لو اخذنا التطبيق على منصة ios رح يظهر لنا انه تكون مشكله بحسب كلام موقع فلاتر ف منصة ios لا تدعم عمل خاصية registerPeriodicTask ولو حذفت هذا السطر ورجعنا لنظام اندرويد ما رح يعمل على الاندرويد
كيف ممكن نحل هذا المشكلة ؟ بحيث انه ما يتعرض في المنصتين
اما المشكلة الثانية لو حذفنا registerPeriodicTask عشان نجعل workmanager لزم نذهب الى xcode ثم من قائمة Debug → Simulate Background Fetch حتى يعمل هذا مشكلة كيف نجعله يعمل بشكل مستمر بدون هذا الامر ؟ ايضا مع هذا الطريقة يعمل لمرة واحدة فقط ولا يعود يعمل بعدها ما لم اعمل نفس الخطوه من جديد Debug → Simulate Background Fetch
الكود المستخدم لدي كامل:
باقي الخطوات انا متبع شرح تنصيب الاضافة على ios
https://github.com/fluttercommunity/flutter_workmanager/blob/master/IOS_SETUP.md
ياليت الي معه فكره ب هذا المشاكل يفيدنا ولكم جزيل الشكر
0 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.