Xamarin android-应用关闭时推送通知单击删除 SQLite 数据

Posted

技术标签:

【中文标题】Xamarin android-应用关闭时推送通知单击删除 SQLite 数据【英文标题】:Xamarin android- push notification click deleting SQLite data when app closed 【发布时间】:2018-07-04 18:06:14 【问题描述】:

我已在 xamarin android 应用程序中集成了 FCM 推送通知。当前台通知传递时,通知单击事件调用MainActivity 并从那里它没有接收和删除所有插入的 SQLite 记录,因为我导航到错误的页面。如何检索我的 SQLite 数据库? 谢谢你。 我的代码:

click_action 代码:

[IntentFilter(new[]  "SISActivity" , Categories = new[]  Intent.CategoryHome, Intent.CategoryDefault )]
public class SISActivity : AppCompatActivity

      //from here need to navigation on other pages.

使用 FCM 通知发送 click_action

click_action":"SISActivity"

但是代码从MainActivity开始执行

主要活动中用于获取已登录用户

的代码
SQLiteAsyncConnection _conn;
   _conn = DatabaseAccess.GetConnection();
   //if table already created sqlite wont create it again
   await _conn.CreateTableAsync<LoggedInUser>();
   var objSisRepo = new SISRepository<LoggedInUser>(_conn);
   var resultSingle = await objSisRepo.Get();

resultSingle 得到 0,即使记录可用并删除现有记录 记录。因此,我导航到登录页面而不是主页。 当应用程序在后台时,它工作正常。我在这里使用异步编程。

SQLite 连接获取方法。

public static SQLiteAsyncConnection GetConnection()
        
            SQLiteAsyncConnection con = null;
            try
            
                var sqlDbFileName = "edTheSIS.db3";
                var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
                var path = System.IO.Path.Combine(documentsPath, sqlDbFileName);
                var connection = new SQLiteAsyncConnection(path);
                con = connection;

                return connection;
            
            catch (Exception ex)
            
                Toast.MakeText(Application.Context, "Something went wrong", ToastLength.Short).Show();
                var objLog = new LogService();
                objLog.MobileLog(ex, SISConst.UserName);
            
            return con;
        

【问题讨论】:

你在使用Xamarin.Forms项目吗? 不,我正在使用 Xamarin android。谢谢 我认为我们可能需要查看一些代码来帮助您查明问题。 确定。但为此我需要将代码粘贴到同一个评论框中,或者我需要编辑问题。谢谢 嗨@York Shen 我应该在哪里发布我的代码,我是堆栈溢出的新手,不知道如何正确使用它。 【参考方案1】:

我不知道这是否是正确的答案,但接近它,并解决了我的问题。我正在使用 AsyncSQLiteConnection ,因为我已经发布了我的代码。现在我已经删除了它,只使用SQLiteConnection 它对我有用。谢谢

【讨论】:

以上是关于Xamarin android-应用关闭时推送通知单击删除 SQLite 数据的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.IOS 和 Signalr 推送通知

Xamarin.iOS - 设备关闭时推送通知

Xamarin.Forms Android 推送通知不出现

Azure 移动服务 Xamarin.Android 推送通知示例应用程序出现问题

Xamarin iOS - 推送通知 - 区分点击的推送通知与到达

Xamarin.Android 如何使“wav”文件成为应用程序的默认推送通知声音?