>  > ベレッツァ ベーシックα シートカバー トヨタ カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G 2008年11月~2012年04月 パイピング変更 T372

BoltzEngine

お問い合わせ

BoltzEngine

お問い合わせ

ベレッツァ ベーシックα シートカバー トヨタ カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G SET 2008年11月~2012年04月 パイピング変更 4EBFML T372

ベレッツァ ベーシックα シートカバー トヨタ カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G 2008年11月~2012年04月 パイピング変更 T372

iOS アプリへプッシュ通知を実装し、プッシュトークンを得るための実装方法をご紹介します。

iOS ではプッシュ通知にあたって、ユーザーの許可を得る必要があることに留意が必要です。

対象とするバージョンの検討

iOS でのプッシュ通知の実装方法はバージョンを経ることに変わっています。このため、古いバージョンをサポートするアプリの場合、新しいバージョンの OS と古いバージョンの OS で処理を分け、それぞれのバージョンに合わせた方法で実装します。古いバージョンの実装が最近のOSで動いても、その後のバージョンの OS で無効とされる可能性があるため、できるだけ新しい方法で実装しておく必要があります。

新しいバージョンの時の動作と古いバージョンの時の動作を分けるには、以下のような方法を使います。

1// Swift の場合
2if #available(iOS 10.0) {
3 // iOS 10 以降
4}
5else {
6 // それ以下
7}
1// Objective-C の場合
2if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_10_0) {
3 // iOS 10 未満
4}
5else {
6 // iOS 10 以上
7}

iOS 10 以降の実装方法

iOS 10 以降では通知の表示に UserNotification フレームワークを使用します。

カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G パイピング変更 シートカバー ZRE144G/NZE144G/ZRE142G/NZE141G ベレッツァ 2008年11月~2012年04月 パイピング変更 トヨタ ベーシックα T372

インストール後、初回の UNUserNotificationCenter.current().requestAuthorization(options:, completionHandler:) メソッドの呼び出し時に、ユーザーに通知許可要求ダイアログが表示されます。許可されたら UIApplication.shared.registerForRemoteNotifications() でプッシュトークンを取得します。

 1// options で使いたい通知の種類 (alert: メッセージ, .badge: バッジ表示, .sound: 音) を指定する
 2UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
 3 if (granted) {
 4 // options で要求した通知がすべて許可された
 5
 6 // プッシュトークンを要求する
 7 UIApplication.shared.registerForRemoteNotifications()
 8 }
 9 else {
10 // 通知のいずれかが許可されなかった
11 }
12}

プッシュトークンを取得する

UIApplication.shared.registerForRemoteNotifications() の呼び出し後 AME MODELART BRAZZER (モデラート ブレイザー) 20インチ 9.0J PCD:114.3 穴数:5 inset:-23 Hi DISK ブラックフィニッシュ [ホイール単品4本セット]ky、AppDelegate の application(_:didRegisterForRemoteNotificationsWithDeviceToken:) デリゲートメソッドが呼び出されます。

この中で、サーバーへ送信する処理を記述します。トークンは Data(NSData) クラスのインスタンスで渡されるので 【送料無料】 235/50R18 18インチ SSR エグゼキューター EX04 7.5J 7.50-18 YOKOHAMA ヨコハマ ブルーアース A(AE50Z) SALE サマータイヤ ホイール4本セット【YOsum18】、適宜エンコードが必要となります。

1func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
2 let tokenString = deviceToken.hexadecimalString
3 // tokenString をサーバーへ送信する処理を記述する
4}

BoltzEngineで使用するHexエンコーディングへの変換はBoltzMessengerSDK内に含まれるDataExtension.swiftに定義されており、これを取り込むことでhexadecimalStringが追加されます。

 1extension Data {
 2 public var hexadecimalString: NSString {
 3 var bytes = [UInt8](repeating: 0, count: count)
 4 copyBytes(to: &bytes, count: count)
 5 
 6 let hexString = NSMutableString()
 7 for byte in bytes {
 8 hexString.appendFormat("%02x", UInt(byte))
 9 }
10 
11 return NSString(string: hexString)
12 }
13}

通知の許可状態を検出する

ユーザーが通知を許可しているかどうかは UNUserNotificationCenter.current().getNotificationSettings(completionHandler:) で検出できます。

トークン送信中にアプリを終了されるなどのエラーに備えて、アプリ起動後1回実行し [BLITZ] ブリッツ パワスロ BRZ ZC6 16/08~ FA20 MT、許可されていればregisterForRemoteNotifications() を実行するといった処理を記述することをお勧めします。

1UNUserNotificationCenter.current().getNotificationSettings { (setting) in
2 if setting.authorizationStatus == .authorized {
3 // 許可されている
4 UIApplication.shared.registerForRemoteNotifications()
5 }
6}

iOS 8〜9での実装方法

iOS 8〜9の場合は、UIUserNotificationSettings を作成して UIApplication に登録します。

カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G パイピング変更 シートカバー ZRE144G/NZE144G/ZRE142G/NZE141G ベレッツァ 2008年11月~2012年04月 パイピング変更 トヨタ ベーシックα T372

インストール後、初回の UIApplication.shared.registerUserNotificationSettings(types:categories:) メソッドの呼び出し時に、

ベレッツァ ベーシックα シートカバー トヨタ カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G 2008年11月~2012年04月 パイピング変更 T372 【爆安セール中】

マジカルレーシング MVアグスタ F4 リアフェンダー 綾織りカーボン製;ドライブキット AFAM(アファム) ZZR1400/ABS(06~11年);CRIMSON(クリムソン) CLUB LINEA L747S KING LABEL (クラブリネア L747S キングレーベル) 22インチ 12.5J PCD:120.65 穴数:5 inset:24 DISK TYPE:HIGH カラー:ブラックポリッシュ [ホイール1本単位]/H

ベレッツァ ベーシックα シートカバー トヨタ カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G 2008年11月~2012年04月 パイピング変更 T372;ings イングス ウイング Z-Power WING WET スタンダード 1400mm マツダ RX-8(SE3P)・RX-7(FD3S/FC3S);Project μ プロジェクトミュー ブレーキパッド B SPEC フロント ブルーバード EU12/RU12/TMU12;サマータイヤ LT235/80R17 120/117S BFグッドリッチ オールテレーン T/A KO2 ブラックレター BFGoodrich All-Terrain T/A KO2;[CUSCO] クスコ ロールケージ SAFETY21 ワークスタイプ 13点式 定員2名 逃げ シビック EK4 1995年09月~2000年09月 B16A 1.6 FF サンルーフ無 ※北海道は送料7128円(税込) 沖縄・離島は着払い ※個人宅発送不可、車屋宛のみ

キューブ/BZ11/H14.10~H20.11 日産■新車時 34B19L搭載車用N-60B19L/C6【パナソニック カオス ブルー バッテリー】, ZESTINO ゼスティノ ACROVA アクロバ 07A 225/40R18 RAYS GRAM LIGHTS 57FXX 18 X 7.5 +40 5穴 114.3, 【2017年製】 225/45R18 ダンロップ ルマン5 サマータイヤ ホイールセット 4本 DUNLOP LEMAN5 LM705 低燃費タイヤ クレンツェGraben680EVO 18-7.5J 車種例 クラウン プリウスα WRX ジューク, CRIMSON(クリムソン) CLUB LINEA L566 KING LABEL (クラブリネア L566 キングレーベル) 22インチ 10.5J PCD:115 穴数:5 inset:11 DISK TYPE:HIGH カラー:ハイパーブラック [ホイール1本単位]/H, 17インチADVAN Racing RS-D 17×8.5J 5/114.3 +51 HUB:73.1φBB(マットブラック) アドバンレーシング 新品アルミホイール1本価格 フローフォーミング YOKOHAMA スタッドレス ice GUARD6 IG60 205/55R16 & ジャパン sport01 16×6.5J 114.3/5H + 53 アクセラ スポーツ BLEFW

、ユーザーに通知許可要求ダイアログが表示されます。

1let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
2UIApplication.shared.registerUserNotificationSettings(settings)

許可または不許可が判明すると、 AppDelegate の application(_:, didRegister:) デリゲートメソッドが呼ばれます。この中で引数の UIUserNotificationSettings を使って通知が許可されたかどうかを判定します。通知の利用が許可されていれば UIApplication.shared.registerForRemoteNotifications() でプッシュトークンを取得します。

1func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) {
2 if notificationSettings.types != .none {
3 // 何らかの通知が許可されている
4 UIApplication.shared.registerForRemoteNotifications()
5 }
6 else {
7 // 通知が全て不許可の状態
8 }
9}

プッシュトークンを取得する

iOS 10 以降の時と同様 【割引クーポン配布中】AUTBAHN/アウトバーン 広角ドレスアップサイドミラー ゴールド ライフ/JB5~8(ドアミラーウィンカー) 年式03.09~08.10 商品番号:H35、AppDelegate の application(_:didRegisterForRemoteNotificationsWithDeviceToken:) デリゲートメソッドが呼び出されますので、この中にサーバーへ送信する処理を記述します。

通知の許可状態を検出する

ユーザーが通知を許可しているかどうかは UIApplication.shared.currentUserNotificationSettings で検出できます。ここには通知の許可を取得した時と同じ UIUserNotificationSettings が得られます。

トークン送信中にアプリを終了されるなどのエラーに備えて、アプリ起動後1回実行し、許可されていれば registerForRemoteNotifications() を実行するといった処理を記述することをお勧めします。

1if let settings = UIApplication.shared.currentUserNotificationSettings {
2 if settings.types != .none {
3 // 何らかの通知が許可されている
4 UIApplication.shared.registerForRemoteNotifications()
5 }
6}

iOS 7未満での実装方法

カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G パイピング変更 シートカバー ZRE144G/NZE144G/ZRE142G/NZE141G ベレッツァ 2008年11月~2012年04月 パイピング変更 トヨタ ベーシックα T372

インストール後、初回の UIApplication.shared.registerForRemoteNotifications(matching:) メソッドの呼び出し時に、ユーザーに通知許可要求ダイアログが表示されます。

1UIApplication.shared.registerForRemoteNotifications(matching: [.alert, .badge, .sound])

プッシュトークンを取得する

iOS 10以降の時と同様、AppDelegateの application(_:didRegisterForRemoteNotificationsWithDeviceToken:) デリゲートメソッドが呼び出されますので、この中にサーバーへ送信する処理を記述します。

通知の許可状態を検出する

UIApplication.shared.enabledRemoteNotificationTypes() から、現在許可されている通知の種別を取得できます。

トークン送信中にアプリを終了されるなどのエラーに備えて、アプリ起動後1回実行し、許可されていれば registerForRemoteNotifications(matching:) を実行するといった処理を記述することをお勧めします。

1let types = UIApplication.shared.enabledRemoteNotificationTypes()
2if types != .none {
3 // 何らかの通知が許可されている
4 UIApplication.shared.registerForRemoteNotifications(matching: [.alert, .badge, .sound])
5}

通知の許可ダイアログを表示するタイミングの検討

通知許可要求ダイアログは、急に表示されるとそのアプリがどのような通知を表示するかがわからず、「拒否」を選択する可能性があります。

むやみに通知許可要求ダイアログを出さずに、「通知の許可状態を検出する」の方法で通知が許可されているかどうかを判定し、初回の要求と判断できる場合については「このアプリがどのような通知を出すのか」といった説明画面を表示させるという方法をとることをお勧めします。

また エスペリア スーパーダウンサス 1台分 ポルテ NNP10 EST-604 ESPELIR Super DOWNSUS ダウンスプリング バネ ローダウン コイルスプリング【店頭受取対応商品】、メッセージングアプリなど、通知がないとUXが大きく下がるアプリに関しては同様に通知不許可の状況に対して通知の許可を与えるようユーザーに促すことも可能です。このとき、以下のような記述で設定アプリへ遷移させることも可能です。

1let url = NSURL(string:UIApplicationOpenSettingsURLString)
2UIApplication.sharedApplication().openURL(url)

iOS8未満でプッシュトークンを更新する

iOS 8 未満の端末では通知許可要求ダイアログの選択状況はアプリを再インストールしても一定期間経たなければ変化しません。

テスト等の目的で通知許可をリセットするには、以下のような手順を実行します。(Apple Technical Note TN2265)

  1. アプリをアンインストールします。
  2. 端末を再起動します。
  3. 設定→一般→日付と時刻 を開き、日付を進めます。
  4. 再度端末を再起動します。

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは 、

ベレッツァ ベーシックα シートカバー トヨタ カローラフィールダー ZRE144G/NZE144G/ZRE142G/NZE141G 2008年11月~2012年04月 パイピング変更 T372

、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら

記事へ戻る

{yahoojp} {fenrir-inc.com}