当我的应用程序被终止时,如何将数据发布到服务器?

时间:2016-07-09 05:31:44

标签: ios

当我的应用程序被终止时,如何将数据发布到服务器?我使用NSURLSession类。我尝试在applicationWillTerminate运行时发布数据,但它不起作用。

3 个答案:

答案 0 :(得分:2)

applicationWillTerminate不适用于此类任务,您可能没有足够的时间执行与服务器相关的操作。

Refer this apple doc

  

此方法可让您的应用知道它即将被终止   完全从记忆中清除。您应该使用此方法执行任何操作   应用程序的最终清理任务,例如释放共享资源,   保存用户数据,并使计时器无效。你执行这个   方法有大约五秒钟来执行任何任务并返回。   如果方法在时间到期之前没有返回,则系统可能会终止   整个过程。

答案 1 :(得分:0)

为此目的使用applicationDidEnterBackground方法。

答案 2 :(得分:0)

在其他合法答案的基础上,您可以尝试在应用程序进入后台时发送数据,但在某些情况下,应用程序可能会在请求完成之前终止。另一种方法是在本地存储数据(取决于您的数据包含的内容)(即android.support.v4.app.NotificationCompat.Action replayAction = new NotificationCompat.Action.Builder(R.mipmap.ic_launcher, "Replay", PendingIntent.getActivities(this, 1, new Intent[]{new Intent(this, ReplayActivity.class)}, PendingIntent.FLAG_UPDATE_CURRENT)) .addRemoteInput(new RemoteInput.Builder("KEY").setAllowFreeFormInput(true).setLabel("Enter text you want to send").build()) .build(); android.support.v4.app.NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_notification_icons) // Must Required .addAction(replayAction); ...// Notification Configuration android.app.NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mgr.notify(1, builder.build()); ),然后在将来的某个时间点打开应用程序时发出请求。一个明显的警告是,如果用户正在访问来自多个客户端(如网站或其他设备)的数据,则需要在提出请求时对其进行协调。