質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

0回答

1627閲覧

プッシュ通知のタイミングについて

hikaaaaaaaa

総合スコア19

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2020/03/09 16:25

unityでのプッシュ通知の実装をした際、アプリが起動したタイミングでプッシュ通知のタイマーの設定とプッシュ通知の番号の削除を行おうとしましたがこちらがうまくできません。

現在検討しているのが下記の①(プッシュ通知の番号の削除)を全プロジェクト内に実装し、

初めのスタート画面のみに下記の①と②(番号の削除とプッシュ通知タイマーの設定)を実装しようと考えております。

この場合でも、スタート画面を開かないことにはプッシュ通知のタイマーが設定されないので、どうして良いか手詰まりを起こしております、、

このページを参考にして③のスクリプトを作成しました。

アドバイスをいただけますと幸いです、、

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5#if UNITY_ANDROID 6using Unity.Notifications.Android; 7 8#elif UNITY_IOS 9using Unity.Notifications.iOS; 10#endif 11 12public class Cancel : MonoBehaviour 13{ 14 // Start is called before the first frame update 15 void Start() 16 { 17 OnApplicationFocus(); 18 } 19 20 void OnApplicationFocus() 21 { 22#if UNITY_IOS 23 iOSNotificationCenter.ApplicationBadge = 0; 24#endif 25 } 26} 27

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4#if UNITY_ANDROID 5using Unity.Notifications.Android; 6 7#elif UNITY_IOS 8using Unity.Notifications.iOS; 9#endif 10 11 12 13public class Push : MonoBehaviour 14{ 15 // Start is called before the first frame update 16 void Start() 17 { 18 19 LocalNotificationWrapper.ReserveNotification("本文", "本文", 10); 20 21 } 22 23 24}

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5#if UNITY_ANDROID 6using Unity.Notifications.Android; 7 8#elif UNITY_IOS 9using Unity.Notifications.iOS; 10#endif 11 12/// <summary> 13/// ローカルプッシュ通知 14/// </summary> 15public static class LocalNotificationWrapper 16{ 17 private static bool _isInitialized; 18 19 20 21#if UNITY_ANDROID 22 // 通知チャンネルID 23 // 本サンプルはシングルチャンネルです 24 private static string ChannelId = "channelId"; 25#endif 26 public static void InitializeIfNeed() 27 { 28 if (_isInitialized) 29 { 30 return; 31 } 32 33 _isInitialized = true; 34#if UNITY_ANDROID 35 // 通知チャンネルの登録 36 AndroidNotificationCenter.RegisterNotificationChannel( 37 new AndroidNotificationChannel 38 { 39 Id = ChannelId, 40 Name = "Default ChannelName", 41 Importance = Importance.High, 42 Description = "Channel Description", 43 // 1を指定してもバッジがつかない... 44 Numbrer = 1, 45 }); 46#endif 47 } 48 49 /// <summary> 50 /// ローカル通知の予約 51 /// </summary> 52 public static void ReserveNotification( 53 string title, 54 string body, 55 int afterSec 56 ) 57 58 59 60 { 61 InitializeIfNeed(); 62#if UNITY_ANDROID 63 // 通知を送信する 64 AndroidNotificationCenter.SendNotification(new AndroidNotification 65 { 66 Title = title, 67 Text = body, 68 // アイコンをそれぞれセット 69 SmallIcon = "icon_0", 70 LargeIcon = "icon_1", 71 // 今から何秒後に通知をするか? 72 FireTime = System.DateTime.Now.AddSeconds(afterSec) 73 }, ChannelId); 74 75#endif 76 77 78 79#if UNITY_IOS 80 iOSNotificationCenter.ScheduleNotification(new iOSNotification() 81 { 82 Title = title, 83 Body = body, 84 ShowInForeground = true, 85 Badge = 1, 86 // 時間をトリガーにする 87 Trigger = new iOSNotificationTimeIntervalTrigger() 88 { 89 TimeInterval = new System.TimeSpan(0, 0, afterSec), 90 Repeats = false 91 } 92 93 94 95 }); 96 97 98 99#endif 100 } 101 102 103} 104

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/03/11 04:44

「うまくできません」とは具体的にどうなっているのかと、何がしたいのかを明記してください。 (スタート画面以外が開かれた場合でもタイマー設定をしたいだけなら、全ての画面で「まだタイマー設定されていないなら、タイマー設定する」という条件分岐を加えた処理を入れればいいだけだと思いますが何が問題なのでしょうか)
hikaaaaaaaa

2020/03/11 05:11

ご回答ありがとうございます。 確かに上記の方法で解決ができそうです、、 恥ずかしながらその条件分岐の設定方法が理解できていないのでアドバイスをいただけますと幸いです。
sakura_hana

2020/03/11 05:38

あとは単純に「タイマーをセットしたか」というフラグがアプリ上で生きているだけでいいのなら通常の変数(またはstatic変数)で管理すればいいだけですし、アプリ終了後も保持するならセーブ機能を実装するという方法もあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問