Unity3D研究院之IOS本地訊息通知LocalNotification的使用__IOS

來源:互聯網
上載者:User

         現在的遊戲裡一般都會有本地訊息,比如每天定時12點或者下午6點告訴玩家進入遊戲領取體力。這種東西沒必要伺服器去推送,用戶端就可以完成。Unity裡面提供了本地任務的功能但是只有IOS上才支援,開始我有點不解為什麼Android上不支援,當我把Android的本地通知做完後,我才明白。IOS源生的API中就支援固定時間迴圈推送,而Android上需要自己開啟一個Services,啟動一個AlarmManager的定時器任務,還好我之前開發過Android, 言歸正傳今天我們先說IOS上的本地通知。

代碼其實很簡單,我先說下原理後面給出實現步驟。

1.當遊戲進入背景時候註冊本地通知

2.當遊戲進入前台的時候關閉本地通知

下面上代碼。 C#

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 using UnityEngine ; using System . Collections ;   public class NewBehaviourScript : MonoBehaviour {      //本地推送      public static void NotificationMessage ( string message , int hour , bool isRepeatDay )      {          int year = System . DateTime . Now . Year ;          int month = System . DateTime . Now . Month ;          int day = System . DateTime . Now . Day ;          System . DateTime newDate = new System . DateTime ( year , month , day , hour , 0 , 0 ) ;          NotificationMessage ( message , newDate , isRepeatDay ) ;      }      //本地推送 你可以傳入一個固定的推送時間      public static void NotificationMessage ( string message , System . DateTime newDate , bool isRepeatDay )      {          //推送時間需要大於目前時間          if ( newDate > System . DateTime . Now )          {              LocalNotification localNotification = new LocalNotification ( ) ;              localNotification . fireDate = newDate ;                   localNotification . alertBody = message ;              localNotification . applicationIconBadgeNumber = 1 ;              localNotification . hasAction = true ;              if ( isRepeatDay )              {                  //是否每天定期迴圈                  localNotification . repeatCalendar = CalendarIdentifier . ChineseCalendar ;                  localNotification . repeatInterval = CalendarUnit . Day ;              }              localNotification . soundName = LocalNotification . defaultSoundName ;              NotificationServices . ScheduleLocalNotification ( localNotification ) ;          }      }        void Awake ( )      {          //第一次進入遊戲的時候清空,有可能使用者自己把遊戲沖後台殺死,這裡強制清空          CleanNotification ( ) ;      }        void OnApplicationPause ( bool paused )      {          //程式進入後台時          if ( paused )          {              //10秒後發送              NotificationMessage ( "雨松MOMO : 10秒後發送" , System . DateTime . Now . AddSeconds ( 10 ) , false ) ;              //每天中午12點推送              NotificationMessage ( "雨松MOMO : 每天中午12點推送" , 12 , true ) ;          }          else          {              //程式從後台進入前台時              CleanNotification ( ) ;          }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.