高度な
通知グループを作成する¶
通知センターに表示される通知をグループ化できます。同じイベントからの通知をグループ化して折りたたむことができます。折りたたまれた通知グループはユーザーによって再度展開でき、通知グループの各メンバーには個別にアクセスできます。
通知グループはthe Hive コンソール > 通知 > プッシュ キャンペーン > キャンペーン 登録 > オプション > グループキーで作成できます。グループキーを使用するに変更し、グループキーの値を追加します。Hive コンソールでグループを作成した後、groupId
を使用してローカルプッシュまたはリモートプッシュを送信する際に通知グループを適用できます。通知グループが適用されると、通知は以下のようにグループごとに折りたたまれて表示されます。
| |
iOS 10 高度な通知¶
AppleがiOS 10にUserNotifications.frameworkを追加したことで、このフレームワークを使用して通知に画像やビデオクリップを添付できるようになりました。
システム要件¶
- Xcode 8.0と利用可能なMacOSのバージョン、およびiOS 10のインストールが可能なデバイスが必要です。
- バージョンが低いOSでは、拡張機能が適用されていても、同じ通知が受信されます。
Note
iOS 10.1 およびそれ以下のバージョンでは、欠陥のあるOSのためにメディアを使用して拡張機能を実行する際に問題が発生することがあります。その場合、拡張機能のデプロイメントターゲットを10.2に設定し、一般的な通知タイプを受信するために10.1およびそれ以下のバージョンのOSに対応するように実装してください。
実行プロセス¶
この関数は、通知サービス拡張("拡張")を利用して実行されますiOS。
通知サービス拡張は、リモート通知がユーザーに配信される前にペイロードを変更できるアプリ拡張の一つです。他のアプリのプロセス(UIや機能)をコンテキストを変更することなく使用するための技術です。
詳細については、こちらをご覧ください。
ファイル容量とタイプ制限¶
メディアファイルを添付する容量は制限されています。これに関する詳細は、UNNotificationAttachmentを参照してください。
Warning
ユーザーがAVAudioSessionを使用している間に、Youtubeやさまざまなモバイルゲーム(例:Summoners War、Dragon Blaze、Chain Strike)からプッシュサービスによって送信された音声を送信すると、ホーム画面(Springboard)が再起動します。iOSのバージョン、デバイスタイプ、Hive SDKに関係なく、Appleの内部システムがクラッシュすることが示されています。
このエラーは2018年12月20日にAppleに報告されているため、メディア通知を通じた音声送信機能の使用を必ず停止してください。
タイプ | フォーマット | 容量 |
---|---|---|
画像 | JPG, JPEG, PNG, GIF | 10MB |
ビデオ | MP4, AVI | 50MB |
- ネットワークの問題によりタイムアウトが発生した場合、ユーザーはメディアなしの一般的な通知を受け取ります。
- 低速ネットワークでは、ダウンロードに最大10分かかる場合がありますので、現地のネットワーク状況を考慮して、適切な容量のメディアを使用するようにしてください。
実装¶
メディアをダウンロードし、通知オブジェクトを再構成し、ユーザーに配信するには、いくつかの設定とソースコードの追加が必要です。
Note
通知サービス拡張はライブラリやフレームワークに含めることはできません。したがって、拡張機能を使用するには、Hive SDKによって提供されたガイドに基づいて設定する必要があります。
拡張機能の追加¶
この機能を使用するには、通知サービス拡張をプロジェクトに追加し、クラスを手動で追加または上書きすることなく、新しいターゲットをプロジェクトに追加する必要があります。
プロジェクトにターゲットを追加すると、テンプレートが自動的に生成されます。
1. プロジェクト設定で、ターゲットを追加するためにプラス型のボタン(下の赤い四角)をクリックします。
2. 通知サービス拡張を選択し、次へをクリックします。
(通知サービス拡張は、Xcode 8以降のプロジェクトにターゲットとして追加できます)
4. 次のようなページがポップアップしたら、Activateボタンをクリックしてください。
拡張機能は現在のプロジェクトに自動的に埋め込まれ、ビルドのためのスキームが追加されます。
6. プロジェクトに新しいテンプレートクラスNotificationServiceが追加されました。
7. 追加した拡張機能のデプロイメントターゲットを10.2以降に設定します。
Hiveextensions フレームワークの追加¶
HIVEExtension.frameworkは、Hive SDKによって提供され、メディアのダウンロードを簡単にします。
HIVEExtensionFrameworkを追加するには:
1. フレームワークを手動で追加します。
- プロジェクトにHIVEExtension.frameworkを追加します。
- ページが以下のようにポップアップしたら、追加された拡張機能の対象を確認し、**完了**ボタンをクリックしてください。
2. フレームワーク検索パスを設定します。
HIVEExtension.frameworkの保存ルートを**Xcodeproj > 生成されたExtension Targetを選択 > Build Settings > Framework Search Paths**に追加します。
3. フレームワークのステータスを設定します。
iOS 10.2およびそれ以下をサポートするゲームでは、HIVEExtensions.frameworkをオプションとして設定します。
- Xcodeproj > 生成された拡張ターゲットを選択 > 一般 > リンクされたフレームワークとライブラリ
フレームワークの適用¶
NotificationService.mにフレームワークを次のサンプルコードのようにインポートします。
テンプレート内のメソッドからHIVEExtensions.frameworkによって提供されたメソッドを呼び出すように実装し、その後メソッド内の初期テンプレートコードを削除してください。
#import <HIVEExtensions/HIVEExtensions.h>
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
[HIVENotificationService didReceiveNotificationRequest:request withContentHandler:contentHandler];
}
- (void)serviceExtensionTimeWillExpire {
[HIVENotificationService serviceExtensionTimeWillExpire];
}
メディアアプリケーションに関するノート¶
送信時間と受信時間の違い¶
拡張機能がすべてのタスクを完了した後、ユーザーへの通知の送信は、送信時間と受信時間の不一致を引き起こす可能性があります。クライアントはサーバーが送信した時間を表示します。
例えば、15:00に通知を送信し、ダウンロードが15:05に完了した場合、通知の到着時間は15:00です。
デバイスの容量¶
プッシュサービスを介して配信されるメディアは、ユーザーのデバイスに保存され、プッシュ通知によって公開されます。受信したメディアは内部キャッシュメモリに保存され、ユーザーのデバイスの内部容量を占有します。
ユーザー デバイスの内部ストレージ容量が不足しているとき、OS はキャッシュ データ スペースからいくつかのデータを削除します。
ユーザーのモバイルデータを使用する¶
メディアのダウンロードはユーザーのモバイルデータを使用します。メディアはプッシュ通知を介して配信され、ダウンロードはユーザーの同意なしに進行するため、ダウンロードに対してデータ使用料が発生する可能性があります。
ユーザーがプッシュサービスを介して音声または動画ファイルを受信した場合、ダウンロードする前に各ユーザーのネットワーク接続状況を確認してください。ユーザーがWi-Fiを有効にしていない場合、ダウンロードを防ぐためにメディアなしでプッシュを公開します。
プッシュ通知を通じて配信されるメディアの種類は、メディアのURLの末尾に指定された拡張子で確認され、[ファイル容量と種類の制限]項目に指定された拡張子のみが公開されます。
転送されたURL | Wi-Fi | LTE/3G |
http://xxx/notimovie.mp4 | ダウンロード後にプッシュ通知でメディアを常に表示する | 動画ファイルの拡張子が指定されているため、ダウンロードなしでプッシュ通知でメディアを表示する (.mp4) |
http://xxx/notimovie | ダウンロード後にプッシュ通知でメディアを常に表示する | 音声またはメディアファイルではないため、ダウンロード後にプッシュ通知でメディアを表示する |
http://xxx/notisound.wav | ダウンロード後にプッシュ通知でメディアを常に表示する | 音声ファイルの拡張子が指定されているため、ダウンロードなしでプッシュ通知でメディアを表示する (.wav) |
http://xxx/notiimage.jpg | ダウンロード後にプッシュ通知でメディアを常に表示する | 音声またはメディアファイルではないため、ダウンロード後にプッシュ通知でメディアを表示する |
アプリのトランスポートセキュリティ設定¶
一般的にAppleのポリシーは、すべてのアプリでサーバー通信が処理されたhttpsを許可することです。このポリシーは、通知を通じて受信するURLに影響を与えます。httpを使用したい場合は、App Transport Security("ATS")の例外を設定する必要があります。 プッシュ通知を介して受信するURLでhttpを利用するために、拡張機能でATSの例外を構成します。アプリケーションがすでにATSの例外を処理していてもです。
ビットコードエラーのトラブルシューティング方法¶
追加された拡張機能の設定でビットコードが有効になっている場合、次のようなエラーが発生する可能性があります。エラーが発生した場合は、set Xcodeproj > Select the generated Extension Target > Build Settings > Enable Bitcode を No に設定してください。
Unityでのメディア送信エラーの場合¶
Hub connection error Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.NotificationServiceExtension" UserInfo={NSDebugDescription=connection to service named com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.NotificationServiceExtension}
時々、メディア伝送中にUnityでエラーが発生し、上記のエラーログが表示されます。この場合、生成されたExtension Targetのアーキテクチャが、armv7とarm64の両方の値を含んでいるか確認してください。