- 投稿日:2021-01-28T14:39:58+09:00
UIScrollViewが慣性スクロール中かどうか知る
概要
UIScrollViewがスクロール中かどうかを知りたかったので、方法を調べた。
環境
- iPadOS14.2
- iOS14
- swift
結果
ペンシルのことを考慮しない場合は
UIScrollView.isDeceleratingというプロパティが生えているので、これを使うことができる。
※詳しく調査していないが、以前はこれだけだと問題があったようだが、現時点(iOS14)では(ほぼ)これでうまくいくただ、慣性スクロールを指で止めた場合は問題ないが、ペンシルで止めた場合、isDeceleratingがtrueになりっぱなしで困った。
調査の結果、以下のようなワークアラウンドで回避できた。
extension UIScrollView { // こんな処理を用意してあげて func stopDecelerating() { let contentOffset = self.contentOffset self.setContentOffset(contentOffset, animated: false) } } // 対象のUIScrollViewのtouchesShouldBeginなどをオーバーライドして、 // ペンシルの場合は、明示的にスクロールを止める class HogeView: UIScrollView { override public func touchesShouldBegin( _ touches: Set<UITouch>, with event: UIEvent?, in view: UIView ) -> Bool { if isDecelerating && touches.contains(where: { $0.type == .pencil }) { stopDecelerating() } } }参考
- 投稿日:2021-01-28T14:19:08+09:00
Iphone カレンダーにスパムが表示&通知される対処法
iPhoneのカレンダーにスパムが表示&通知される。
その対処法を記載します。
■内容
・カレンダーに下記のようなスパムの表示&通知が表示される
→ウィルスに感染しているかもしれません。
→すぐに対処してください!・消そうと思ってもその予定/スケジュールは消せない
→さらには過去のは消えて、新しい予定が毎日追加される。■対処法
iPhoneの設定から設定 > カレンダー > アカウント
アカウント内に登録してあれば、iCloud,Gmail,Yahoo!メール,ドコモメール,メッセージR/Sがありますが、
それ以外に 「Calendar Subscription」 など自身の知らないアカウントがあれば消してください。以上
■原因
・フィッシングサイト、アダルトサイトなどでのポップアップで、「キャンセル」 を押さずに 「OK」 を押してしまった場合。
・調べた所Avgleなどのサイトでポップアップが頻繁に表示されるようです。■備考
他のサイトで下記の対処法が記載ありますが、PCには表示されず、携帯だけ表示されるなど、
iCloudと連携していないこともあるようですので、スパムアカウントを消すことが優先だと思われます。iPhoneでiCloudのカレンダー同期をオフにする
iPhoneで「設定」>「iCloud」> 「カレンダー」をオフにし、「iPhoneから削除」をタップ以上
〜〜〜
FX取引ならこちら!! 世界最高水準 ~ Axiory FX ~
https://portal.axiory.com/registration/?ib=19521
- 投稿日:2021-01-28T11:29:27+09:00
【iOS】AppStoreアプリ申請 Reject(リジェクト)された話【Metadata Rejected】
はじめに
今回Flutterで開発し、すでにGoogle Playでリリースした情報処理試験問題集アプリをAppStoreでもリリース申請をした所
リジェクトされてしまったので、その対処法を記載していきたいと思います。Apple様からのRejectメール
Your app subtitle to be displayed on the App Store include references to the price of your app or the service it provides, which is not considered a part of these metadata items.
- 無料の情報処理試験問題集アプリ
Next Steps
To resolve this issue, please remove any references to pricing from your app’s subtitle, including any references to your app or service being free or discounted. If you would like to advertise changes to your app’s price, consider including this information in the app description. Changes to your app’s price can be made in the Pricing and Availability section of App Store Connect.
Resources
For information on how to revise your app name, please review Renaming a Project or App.
For resources on metadata best practices, you may want to review the App Store Product Page information available on the Apple Developer website.
For information on scheduling price tier changes, please review the Schedule price changes section of App Store Connect Developer Help.
Since your App Store Connect status is Metadata Rejected, we do NOT require a new binary. To revise the metadata, visit App Store Connect to select your app and revise the desired metadata values. Once you’ve completed all changes, reply to this message in Resolution Center and we will continue the review.
朝起きてメールチェックしたら上記のようなメールが届いていました。
その後App Store Connectに移動してアプリの状況を見てみると下記のような感じになってます。リジェクト指摘内容
Your app subtitle to be displayed on the App Store include references to the price of your app or the service it provides, which is not considered a part of these metadata items.
- 無料の情報処理試験問題集アプリ
どうやらサブタイトルにアプリの価格に関する言及がされていた所が問題になったようです。
今回はサブタイトルだけ修正したら、再度レビューをしてくれるようですね。修正後の手順について
調べてみるとリジェクトの内容にはバイナリ却下とメタデータ却下があるようで、バイナリ却下の場合、再度ipaファイル等上げ直さないといけないようです。
Since your App Store Connect status is Metadata Rejected, we do NOT require a new binary. To revise the metadata, visit App Store Connect to select your app and revise the desired metadata values. Once you’ve completed all changes, reply to this message in Resolution Center and we will continue the review.
今回私が却下されたのは、上記の通りメタデータリジェクトだったので、上げ直す必要はないようです。
また、変更が完了したらメールで変更完了の旨お伝えすれば審査を再開してくれるとのことで再審査に提出ボタンを押す必要はないみたいですね!おわりに
Android版でGoogle Playにリリースした時は申請してから2〜3日でステータスが審査完了に変わってました。
iOSのほうが審査がいくらか厳しいとは聞いていましたが、前日の夕方に申請してから翌日朝には修正依頼のメールが来るスピード感はすごいなと思いました。
- 投稿日:2021-01-28T11:29:27+09:00
【iOS】AppStoreアプリ申請したらReject(リジェクト)された話【Metadata Rejected】
はじめに
今回Flutterで開発し、すでにGoogle Playでリリースした情報処理試験問題集アプリをAppStoreでもリリース申請をした所
リジェクトされてしまったので、その対処法を記載していきたいと思います。Apple様からのRejectメール
Your app subtitle to be displayed on the App Store include references to the price of your app or the service it provides, which is not considered a part of these metadata items.
- 無料の情報処理試験問題集アプリ
Next Steps
To resolve this issue, please remove any references to pricing from your app’s subtitle, including any references to your app or service being free or discounted. If you would like to advertise changes to your app’s price, consider including this information in the app description. Changes to your app’s price can be made in the Pricing and Availability section of App Store Connect.
Resources
For information on how to revise your app name, please review Renaming a Project or App.
For resources on metadata best practices, you may want to review the App Store Product Page information available on the Apple Developer website.
For information on scheduling price tier changes, please review the Schedule price changes section of App Store Connect Developer Help.
Since your App Store Connect status is Metadata Rejected, we do NOT require a new binary. To revise the metadata, visit App Store Connect to select your app and revise the desired metadata values. Once you’ve completed all changes, reply to this message in Resolution Center and we will continue the review.
朝起きてメールチェックしたら上記のようなメールが届いていました。
その後App Store Connectに移動してアプリの状況を見てみると下記のような感じになってます。リジェクト指摘内容
Your app subtitle to be displayed on the App Store include references to the price of your app or the service it provides, which is not considered a part of these metadata items.
- 無料の情報処理試験問題集アプリ
どうやらサブタイトルにアプリの価格に関する言及がされていた所が問題になったようです。
今回はサブタイトルだけ修正したら、再度レビューをしてくれるようですね。修正後の手順について
調べてみるとリジェクトの内容にはバイナリ却下とメタデータ却下があるようで、バイナリ却下の場合、再度ipaファイル等上げ直さないといけないようです。
Since your App Store Connect status is Metadata Rejected, we do NOT require a new binary. To revise the metadata, visit App Store Connect to select your app and revise the desired metadata values. Once you’ve completed all changes, reply to this message in Resolution Center and we will continue the review.
今回私が却下されたのは、上記の通りメタデータリジェクトだったので、上げ直す必要はないようです。
また、変更が完了したらメールで変更完了の旨お伝えすれば審査を再開してくれるとのことで再審査に提出ボタンを押す必要はないみたいですね!おわりに
Android版でGoogle Playにリリースした時は申請してから2〜3日でステータスが審査完了に変わってました。
iOSのほうが審査がいくらか厳しいとは聞いていましたが、前日の夕方に申請してから翌日朝には修正依頼のメールが来るスピード感はすごいなと思いました。
- 投稿日:2021-01-28T10:45:12+09:00
ReactNative iOSパーミッションテキストのローカライズ方法
パーミッションリクエスト時のテキストを端末の言語に合わせて変更するときの設定について。
バージョン
ReactNative 0.63.3
Xcode 12.4Info.plistにパーミッションを追加
アプリ内でカメラを使用するために
Privacy - Camera Usage Description
があるとして、このテキストをローカライズしたいとします。
PROJECTからLocalizationsで多言語化したい言語を追加する
まずLocalizationsから多言語化したい言語を追加します。今回は例として英語と中国語(簡体字)を追加しています。
InfoPlist.strings
ファイルを作成する。
Infoplist.stringsとかLocalizable.stringsとかに名前を変えると反映されないので注意。ドキュメントにちゃんと書いてありました。The values for many keys in an information property list file are human-readable strings that are displayed to the user by the Finder or your own app. When you localize your app, you should be sure to localize the values for these strings in addition to the rest of your app’s content.
Localized values are not stored in the Info.plist file itself. Instead, you store the values for a particular localization in a strings file with the name InfoPlist.strings. You place this file in the same language-specific project directory that you use to store other resources for the same localization. The contents of the InfoPlist.strings file are the individual keys you want localized and the appropriately translated value. The routines that look up key values in the Info.plist file take the user’s language preferences into account and return the localized version of the key (from the appropriate InfoPlist.strings file) when one exists. If a localized version of a key does not exist, the routines return the value stored in the Info.plist file.
About Information Property List Files作成した
InfoPlist.strings
をLocalizeして多言語化するXcodeの右側のカラムからLocalizeボタンを押して追加した言語を選択します。
en.lproj
、zh-Hans.lproj
のように言語ごとにディレクトリが作成され、ディレクトリ内にInfoPlist.strings
が作成されているはずです。
以下のようにInfoPlist.strings
ごとに言語ごとにパーミッションテキストで表示したいテキストを設定します。"NSCameraUsageDescription" = "告诉用户为什么应用会请求访问设备的摄像头的信息。";シミュレータで言語を変更して確認すると設定したテキストが表示されるはずです。
プッシュ通知パーミッションのローカライズ
プッシュ通知のパーミッションテキストは変更できないため端末の言語によって自動で切り替わる。
シミュレータだと言語を変更してもプッシュ通知のパーミッションダイアログ内のテキストは英語で表示されるため実機で確認すること。Androidは?
Androidはパーミッションメッセージを変更できない。
注: launch() を呼び出したときに表示されるダイアログをアプリでカスタマイズすることはできません。ユーザーに詳細な情報やコンテキストを提供するには、アプリの UI を変更して、アプリの機能に特定の権限が必要な理由をユーザーにわかりやすく説明します。たとえば、機能を有効にするボタンのテキストを変更します。
Request app permissions | Android Developers参考
Requesting Permission - App Architecture - iOS - Human Interface Guidelines - Apple Developer
Protected Resources - Apple Developer
インターナショナライゼーションとローカリゼーションのガイド
Handle Localization for iOS Native Messages
iOS10から必要になったユーザデータにアクセスする為に表示する文言をローカライズする
- 投稿日:2021-01-28T10:28:10+09:00
iOS NWConnection利用時のTLSの証明書を無視する方法
はじめに
iPhoneと家庭内で使っているIoT機器とのTLSを使った暗号通信する時に、サーバ証明書の有効性の確認が失敗して、通信エラーになる現象がありました。例えば、IoT機器が自己署名の証明書を使っている場合です。このような場合に、iOSでTLS証明書を無視して通信する方法を書いておきます。
通常の実装
NWConnection
を用いた通常のTLS実装は、以下のようになります。今回の記事に関連する部分(NWConnection
のインスタンス化)のみ記載しています。この実装では、サーバ証明書の確認を行います。このため、IoT機器が自己署名の証明書を使っている場合には、サーバ証明書のエラーとなりIoT機器と通信ができません。let connection = NWConnection(host: host, port: port, using: .tls)サーバ証明書を無視する実装
以下のように、
NWConnection
のパラメータ(using: params
)を設定することで、サーバ証明書を無視することができます。sec_protocol_options_set_verify_block()
でsec_protocol_verify_complete(true)
を設定します。この時に、connection.start(queue: queue)
で使うqueue
が引数に必要です。このため、対象のコードの上下にqueue
に関するコードも記載してあります。let queue = DispatchQueue(label: "label") let options = NWProtocolTLS.Options() sec_protocol_options_set_verify_block(options.securityProtocolOptions, { (_, _, sec_protocol_verify_complete) in sec_protocol_verify_complete(true) }, queue) let params = NWParameters(tls: options) let connection = NWConnection(host: host, port: port, using: params) // 途中省略 connection.start(queue: queue)参考文献