<ins id='v11ag'></ins>

    <i id='v11ag'></i>

      <code id='v11ag'><strong id='v11ag'></strong></code>
      <span id='v11ag'></span>

        <i id='v11ag'><div id='v11ag'><ins id='v11ag'></ins></div></i>
          <acronym id='v11ag'><em id='v11ag'></em><td id='v11ag'><div id='v11ag'></div></td></acronym><address id='v11ag'><big id='v11ag'><big id='v11ag'></big><legend id='v11ag'></legend></big></address>

            <fieldset id='v11ag'></fieldset>
          1. <tr id='v11ag'><strong id='v11ag'></strong><small id='v11ag'></small><button id='v11ag'></button><li id='v11ag'><noscript id='v11ag'><big id='v11ag'></big><dt id='v11ag'></dt></noscript></li></tr><ol id='v11ag'><table id='v11ag'><blockquote id='v11ag'><tbody id='v11ag'></tbody></blockquote></table></ol><u id='v11ag'></u><kbd id='v11ag'><kbd id='v11ag'></kbd></kbd>
          2. <dl id='v11ag'></dl>

            iOS推送实验室-做之前看看我少走弯路

            • 时间:
            • 浏览:34
            • 来源:124软件资讯网

               写作缘故原由:网上看了许多推送文章都没有完善的解答我的疑惑;主要有以下两点  ,1:推送来了我点击应用图标进入应用怎么取到推送新闻  ?2:怎么保证一定能够获取到远程推送的新闻  ,由于有的远程推送新闻很主要;这里主要验证会在哪几个回调收到内容 ,行为(手机顶部有新闻弹出我叫做行为)是怎样的

                实在收到推送到进入应用有这么5种场景  ,1:法式运行在前台来推送了  ,2:法式运行在后台来推送了 ,我点击推送新闻进入法式  ,3:法式运行在后台来推送了  ,我点击应用图标进入法式 ,4:法式没运行来推送了  ,我点击推送新闻进入法式  ,5:法式没运行来推送了  ,我点击应用图标进入法式

                讲推送的文章着实是太多了  ,我就不烦琐原理(http://www.jianshu.com/p/ace1b422bad4)和设置(http://www.jianshu.com/p/db9c95c9e29f)了;我直接拿我的项目(项目最低适配iOS8)来从以下三个方面回覆上面5种情形下会在哪些回调收到内容  ,行为是怎样的

              一:当地推送

              我们从UIApplicationDelegate中找一找哪些是和当地推送相关的回调 ,可以发现有下面这三个;假设现在你不知道B和C什么意思 ,我也是后面才想起来的(有点痴呆了)  ,不外都写了这么多了就不想删除了:

              - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification  {}//A回调
              (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler {}//B回调
              - (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler {}//C回调

                仔细的小同伴可能说了  ,A回调后面不是说让你用XXX回调取代吗  ?哥们 ,这个函数有用期是iOSx-iOS10 ,你慌啥啊 ,等iOS11出来了再换呗;然后B和C形貌一样说明功效一样  ,我们这里使用B  ,C是iOS9-iOS10  ,B是iOS8-iOS10我们要适配版本;这里我们还不知道B和C是什么时间挪用 ,没关系我们逐步来做实验 ,我们把A和B写到AppDelegate.m中;然后我们划分来举行试验

              1:A和B回调都写上

              1)法式运行在前台来当地推送了

                我在我项目中建立一个按钮  ,给按钮响应添加一个只触发一次的当地推送(代码就不写了  ,都市写);在这两个回调中打上断点  ,现在我们运行法式点击按钮然后让法式运行到前台  ,逐步等候当地推送触发(看点网站)~~~

                断点如约执行 ,先是执行了A回调 ,我们XCode下方打印一下notification看看是什么鬼:

              {fire date = 2016年10月24日 星期一 中国尺度时间 下战书4:03:08, time zone = Asia/Shanghai (GMT+8) offset 28800, repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = (null), user info = {
              action = GENERAL;
              "company_no" = 10295;
              content = "\U4e8b\U52a1\U63d0\U9192: boot1";
              "from_user_no" = 21175;
              "target_id" = 15812;
              time = 1477296248000;
              "to_user_no" = 21175;
              type = CALENDARTIP;
              unread = 1;
              }}

                内容或许是触发这次推送的时间(fire date)+时区(time zone)+距离周期(repeat interval)+重复次数(repeat count)+下次触发时间(next fire date)+添加到当地推送的内容(user info)  ,好了没有什么问题  ,然后我们继续执行法式 ,B怎么不执行了  ?我擦  ,我们回过头看看B回调上面的注释:

              // Called when your app has been activated by the user selecting an action from a local notification.

              // A nil action identifier indicates the default action.

              // You should call the completion handler as soon as you've finished handling the action.


                依我考过英语四级(只是考过 ,没有考过)的水平翻译一下  ,这个回调被触发当用户从当地通知点击一个action  ,一个不为nil的action指示默认的action ,你应该写一下完成回调当你握住了这个action(我已经被我的英语水平屈服了);不外意思或许懂了是从通知栏点击某一项激活项目  ,那么啥算激活项目  ?后台进入前台照旧被杀死的项目启动了  ?不管了 ,结论很主要: