2017-08-23 28 views
2

我正在创建应用程序,其中包括允许用户向对方发送消息。我有消息本地存储在一个sqlite数据库(使用FMDB构建),它的工作原理如下。然而,我在计算如何向用户发送消息时遇到了一些问题。我想要做的是在我的主数据库(parse-server)中创建包含发送者ID,接收者ID和实际消息的短暂文本对象。这本身并不困难。什么具有挑战性是弄清楚如何让接收者的应用程序识别何时消息已发送给他们,然后加载该消息。我可以很容易在viewDidLoad()执行消息的负载:如何让服务器直接执行应用程序的功能?

func fetchNewestMessageQuery(){ 
    //pull the message 
    tabelView.reloadData() //reload the tableView's data to 
    //populate it with the newest message 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    fetchNewestMessageQuery() 
    //save the new message to the SQLite database 
} 

然而,这意味着用户在打开该页面永远只能得到消息。我如何基本上呼叫我的fetchNewestMessageQuery()任何时间数据库创建一个新的消息对象,然后发送通知到应用程序(它甚至可能不会在用户的手机上打开)来运行查询(这基本上是所有消息应用程序工作)?我一直习惯于在XCode上只对可预测的事件运行动作/函数... viewDidLoad(),viewDidAppear(),UIButton按等等,并且不知道从哪里开始运行没有来自应用本身的提示的函数。

回答

1

您可以使用其中content-available参数发送无声推送通知,即使用户对您的应用程序禁用推送通知将交付(警报,真的)。如果应用程序尚未运行,您的应用程序甚至会被唤醒,并且会在30秒内处理通知(只要用户不强制退出应用程序)。

但是,他们必须为您的应用启用后台应用刷新(需要iOS 7+)。好消息是后台应用程序刷新将默认打开。

请参阅Configuring a Silent Notification

您需要设置一个服务器来发送推送通知。

或者,建立一个你自己的传出网络连接到你的服务器,这基本上是iOS对Apple推送通知服务的作用。

+0

我喜欢无声通知(讽刺双关语)。但是,既然我也想推送通知,是否可以配置?或者兼容性问题与两者兼而有之?另外,“您需要设置一个服务器来发送推送通知。”你能再解释一下吗?我不能只使用APN吗? –

+1

为了澄清,您将需要一个服务器来为您的应用程序注册推送通知标记,在那里您将令牌存储在某种数据库中,然后连接到APN并“发送”通知适当的证书。有些服务可以使这个更简单。如果您设置推送通知,则会同时收到静默和常规推送通知。对于沉默的用户,用户不会收到警报(在家庭/锁定屏幕上的通知区域)。设置APN有许多部分,但一旦你开始使用它们,它们就非常可靠。您需要彻底阅读文档。 –

+0

您可能会推荐一种服务吗?或者至少给我一个跳板点? –

相关问题