iOS関連のことを調べてみた2020年04月27日

iOS関連のことを調べてみた2020年04月27日
目次

iOS対応、スムーズな背景画像の連動。

こんにちは、絶賛24時間プログラミング中のasuchi0819です。
(んなわけない

ちょっと所要にて、背景画像をスクロールしても動かしたくない実装をしなければならなかったので、その覚書です。

まず、iOSでは背景画像の`cover`時に`background-attachment:fixed;`を指定することはできません。
そこで、`:berofe`に背景画像として設定すればよいです。
しかし、ここで少し落とし穴があるのでコードを見てください。

“`CSS
body:before{
content:””;
display:block;
position:fixed;
bottom:0;
left:0;
z-index:-1;
width:100%;
height:100vh;
overflow:hidden;
background: url() center no-repeat;
background-size:cover;
}
“`

多くのコードでは、
`bottom: 0;`が`top: 0;`や、`overflow: hi

元記事を表示

Unityのモバイルゲーム向けクラッキングが行われるポイントを整理してみた

#免責事項

**この記事に記載されている内容を、実際に試して発生した損害に対していかなる責任も負いません(補償しません)。**
**すべて自己責任のもとで行ってください。**

リリースされているアプリやゲーム、[ソフトウェア利用許諾契約(EULA)](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%88%A9%E7%94%A8%E8%A8%B1%E8%AB%BE%E5%A5%91%E7%B4%84#%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0)やアプリケーション利用規約などでリバースエンジニアリングは禁止されています。
実際に試す場合は、自分で開発しているアプリやゲームや脆弱性確認用でリリースされているアプリやゲームを使いましょう。

勘違いして理解しており、誤ったことを記載しているとこ

元記事を表示

[Swift5]Realm Swift – サンプル#2

iOS で`Realm Swift` を 利用し、サンプルを作成してみました。

# 前回
[Realm Swift – クラス#1](https://qiita.com/mario7/items/2df2c3e172f15f1d07cb)
# サンプル
※ Source: [RealmManager.swift](https://github.com/mario7/studyForiOS/blob/realmJsonSample/realmAndJsonSample/realm/RealmManagerAccess.swift)

##Ream 定義

“`swift
import RealmSwift
class Student: Object, Codable, NSCopying {
@objc dynamic var studentId = “”
@objc dynamic var name = “”
@objc dynamic var age = 0

override static func primaryKey() -> S

元記事を表示

iOS でアプリを公開しようとしたらアカウント調査中を理由に何故かリジェクトされる→通った!

##概要
一ヶ月ほど前に、開発したアプリをApp Store Connect に提出したのですが、「アカウントを調査中だよ。調査が終わるまで何もせず待っててね(意訳)」とだけ言われてリジェクトされてしまいました。

しかし、先日ようやく審査が行われ、無事アプリの状態が「配信準備完了」になりました!
同様の問題に悩まされている方がおられるかもしれないので、ここまでの流れを時系列順に記述しておきます。

##時系列

3/13 アプリを申請する。(一回目)

3/14 上記の理由でリジェクトされる。

3/18 BundleID を変えて再び申請。

3/19 同様の理由で無事リジェクト。

〜調査が終わるのを期待してしばらく放置〜

4/23 一ヶ月以上が経過し、流石に何も音沙汰ないことに焦れて問い合わせる。

4/24 Apple から返信。「調査はまだ進行中だよ」と言われる。

4/25 明朝 アプリの状態が「審査中」になる!

4/25 夜 アプリが審査に通り、「配信準備完了」になる!!

##リジェクトの詳細
以下に Apple から受け取った却下理由を掲載しておきます。

元記事を表示

【Unity + AdMob + CocoaPods + iOS】エラーなくビルドを通すための最適解【Androidにも応用できる】

こんにちは!
ねこじょーかー([@nekojoker1234](https://twitter.com/nekojoker1234))と申します。

みなさんは、UnityEditor 上だけでなく、実機で動作確認したことはありますか?

**実機で動作確認をするには「ビルド」が必要になるのですが、これがまた本当にやっかいです。**
何がやっかいなのかと言うと、とにかくエラーが出ることが多く、そしてそのエラー解決も一筋縄ではいきません。

私が遭遇したやっかいなエラーたちは以下の通り。

– GoogleMobileAds/GoogleMobileAds.h’ file not found
– Undefined symbols for architecture arm64
– Undefined symbols for architecture armv7
– linker command failed with exit code 1

エラー内容で調べるといろいろと情報は出てくるのですが、Unity のバージョンが新しいせいか、どれも解決にはいたりませんでした。

> – [Un

元記事を表示

スマートアプリの脆弱性診断

#アプリの脆弱性診断サービスとは

「アプリケーション脆弱性診断サービス」は、お客様が開発したスマートフォンアプリケーションのセキュリティ対策が適切であるかを診断し、問題点の有無をご報告するサービスです。

インターネットを介した不正アクセス被害が日々報じられる昨今、 その手法を理解し攻撃からシステムを守る技術の重要性はかつてなく高まっています。

#脆弱性診断サービスの分類
自動ツールだけに頼らない手動診断と、リバースエンジニアリングによる高度な解析技術によりの手動診断があります。
1.Webアプリ脆弱性診断
2.スマホアプリ脆弱性診断IOS/Android
3.ペネトレーションテスト(侵入テスト)

#スマホアプリ脆弱性診断の項目
OWASP Mobile Top 10を基準とします
1.png

#報告書

元記事を表示

CombineのObservableObjectでinputとoutputを明確にしたい

## はじめに

SwiftUIでも少しでも複雑な画面になってくるとCombineのObservableObjectの入力と出力を分けたいときがあるわけです。ぱっと見で何が入力で出力なのか整理したいし、他の人にも整理してコードを書いてほしい。

RxSwiftのときは[RxSwift研究読本3 ViewModel設計パターン入門](https://booth.pm/ja/items/1223536)のようにRxCocoaがあるので工夫ができるわけだけど、SwiftUI+Combineではどうしていくと整理されるんだろうというわけで、この記事は簡単なサンプルを作って複数のやり方を示してみます。

## かんたんな画面例

2つのTextFieldがあってその2つの文字が同じ場合にButtonを押せるような画面を例とします。

スクリーンショット 2020-04-19 20.46.24.pngアコーディオンテーブルをつくろう!(swift)

# はじめに
以前書いた[デフォルトTableViewサンプル集(swift)](https://qiita.com/am10/items/9bbbe794e88a96e5420e)のテーブルカスタム編です。
アコーディオンテーブルをつくってみよう:punch:

[ソース](https://github.com/adventam10/TableSample)

# アコーディオンテーブルをつくる(1階層)
完成形はこんな感じ

![single](https://user-images.githubusercontent.com/34936885/80277463-12158d80-872a-11ea-89b2-f648f411aef2.gif)

[ソース](https://github.com/adventam10/TableSample/tree/master/TableSample/TableSample/Tables/Customs/SingleAccordion)

色々やり方はあるかと思いますが今回はセクションヘッダーを使います。

やること
1. セクションヘッダ

元記事を表示

ReactNativeとFirebaseCloudMessagingでiOS Push通知~react-native-firebase編~

# はじめに
ネイティブアプリ(iOS)の技術検証で
react-native-firebaseのテンプレートとFirebaseCloudMessaging(以下FCM)を使用し、
リモートPush通知(画像のアプリを閉じた状態での通知)を実装したので、簡単な手順と注意点をご紹介します。

Push通知に関する情報はたくさんあるのですが、古くて登録画面のUIが異なっていたり、
バージョン依存で動かなかったり、iOSのreact-native-firebaseの記事が少なかったので参考になれば幸いです。

# 対象読者
– ReactNativeでiOSアプリを作成してみたい人
– Firebaseを初めて触る人
– FCMを初めて触る人

# 使用バージョン
– XCode 11.3.1
– “react”: “16.11.0

元記事を表示

iOSアプリケーションのリバースエンジニアリングガイドを作った

iOSアプリケーションのリバースエンジニアリングガイドを作ったので公開します。日本語です。書きかけです。

ARMアセンブリの読み方とかlldbの使い方に関しても書いてるので興味のある方はぜひ。

[iOS App RE Guide](https://4masaka.github.io/iOS-App-Reversing-guide/)

– [ARMアセンブリの読み方](https://4masaka.github.io/iOS-App-Reversing-guide/docs/side-content/arm-assembly)
– [lldbの使い方](https://4masaka.github.io/iOS-App-Reversing-guide/docs/side-content/lldb)
– [有用なツール集](https://4masaka.github.io/iOS-App-Reversing-guide/docs/side-content/useful-tools)

また、Githubで編集してるのでPRも募集してます。何卒……!
https://gi

元記事を表示

[Swift5]Realm Swift – クラス#1

iOS で`Realm Swift` を 調査し、クラスを作成してみました。
# Realm Swift
プロパティの定義

① `dynamic` キーワードと`@objc`
  ・`dynamic` キーワードを使いたい場合、明示的につける

  ・理由:内部で Objective-C で書かれた専用のアクセスメソッドに置き換えられるため

※参照資料
[ドキュメント](https://realm.io/docs/swift/3.20.0/)
[Realm Swift GitHub](https://github.com/realm/realm-cocoa)
[RealmSwift-introduction](https://dev.classmethod.jp/articles/realmswift-introduction/)

## 動作環境
– Swift 5.0
– Xcode 11.1
– Carthage
– github “realm/realm-cocoa” == 3.20.0

## クラス

* Source: [RealmManager.swif

元記事を表示

【ObjectiveC】ナビゲージョンバーの背景を変更する

# はじめに

ナビゲーションバーを色々設定したいなと思った時にメモとして残しておきます。

~~~ObjectiveC:Appdelegate.m
UINavigationBar *navibar = [UINavigationBar appearance];
~~~

この処理を書くことで、全体的な UINavigationBar に適応されます。

## ナビゲーションバーの背景をイメージで設定する

~~~ObjectiveC:Appdelegate.m

// ナビゲーションバーの背景をイメージで設定する
– (void)setupNavigationBar {
UINavigationBar *navibar = [UINavigationBar appearance];
UIImage *image = [UIImage imageNamed:@”navigation_bar_image”];
[navibar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}

~~~

※ イメー

元記事を表示

iOSアプリのPassword AutoFillでユーザーとパスワードの入力画面を分けるには

[前回の投稿](https://qiita.com/temoki/items/023364f15dd8a56874b1)に引き続き、iOSアプリのPassword AutoFillに関する投稿です。

## 一般的なログイン画面の場合

一般的なログイン画面を作ろうとすると、ユーザー(メールアドレス等)とパスワードを入力するフィールドが並んだこんな画面になると思います。

この場合、ユーザーとパスワードの [UITextField](https://developer.apple.com/documentation/uikit/uitextfield) の [textContentType](https://developer.apple.com/documentation/uikit/uitextinputtraits/1649

元記事を表示

Password AutoFill のためのiOSアプリとドメインの関連づけが Firebase App Distribution ではうまくいかなかった

開発中のiOSアプリのログイン画面に **Password AutoFill** 機能を組み込んで実機でのテストしているとき、ログイン情報の候補がキーボードの QuickType バーに表示されないという現象で苦労しました。

結論としては [Firebase App Distribution](https://firebase.google.com/products/app-distribution?hl=ja) でアプリをインストールした時のみ、アプリとドメインとの関連づけがうまくいかないことが原因だったのですが、その調査に苦労したため過程をメモとして残します。

## はじめに
**Password AutoFill** とはiOS11から提供された、ログイン情報(ユーザーやパスワード)を自動入力する機能です。これをログイン画面に仕込んでおけば、Keychainなどのパスワードマネージャーに保存されているログイン情報を自動入力することができます。

以下は Twitter のログイン画面ですが、キーボード上部の QuickType バーに自動的に twitter.com 用のログ

元記事を表示

ReactNativeアプリをAppDistributionにfastlaneでデプロイする方法

## はじめに
今回はfastlane公式ドキュメントにReactNativeでfastlaneを導入する方法が書いていなかったので、その方法について、AppDistributionでのiOSアプリのベータ配布をする方法と共に書いていきたいと思います!!

## fastlaneとは
[fastlane](https://fastlane.tools)とはiOS, Android, flutter, ReactNative等で使用できるツールです。テスト実行, iOSの証明書発行, Beta配布, リリース等のあらゆるタスクを半自動化してくれるツールです。詳しくはfastlaneの[公式ドキュメント](https://fastlane.tools)をご覧ください!!

## AppDistributionとは
AppDistributionとはfirebaseが提供するベータ配布用のツールです。TestFlightとは違い、審査というものが一切ないので開発チーム内でのベータ配布に便利です。[公式ドキュメントはこちら](https://firebase.google.com/docs/a

元記事を表示

CombineのPublishers.Sequenceのmap

Combine.frameworkで遊んでいて `Publishers.Sequence` の `map` が興味深い動作をしたので、雑にまとめておきます。

実行に使った環境はXcode 11.4.1のPlayground(PlatformはiOS)です。

## mapしたものを複数回購読すると

まずは、以下の `PassthroughSubject` の `map` の動作を見てください。

“`swift
var cancellables = Set()
let publisher = PassthroughSubject()

// mapオペレーターで値を10倍する
let kakeru10 = publisher
.map { (value: Int) -> Int in
let result = value * 10
print(“mapping \(value) -> \(result)”)
return result
}

// 2箇所で購読す

元記事を表示

iOS Simulatorのステータスバーの表記をカスタマイズする(iOS13)

参考元: https://www.jessesquires.com/blog/2019/09/26/overriding-status-bar-settings-ios-simulator/

### 確認環境
Xcode: 11.4.1
iOS: 13.4.1

### 手順
iOSシミュレータが起動した状態で、ターミナルで下記のコマンドを実行

“`bash
xcrun simctl status_bar “iPhone SE (2nd generation)” override –time 10:00 –dataNetwork wifi –wifiMode active –wifiBars 3 –cellularMode active –cellularBars 4 –operatorName “docomo” –batteryState charged –batteryLevel 100
“`
Before:
![before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

iOSアプリBuild時に「Unable to install “アプリ名”」と表示されるがXcodeの設定で解決

#問題の概要
* Xcodeにて、Swiftを使ってアプリ開発(iPhone実機)をしていた.
* 今まで実機インストールして動作確認できていたが、突然「Unable to install “アプリ名”」と表示されてインストールできなくなった.
* Apple Developer Programには登録していない状態.

#問題の詳細
新しいプロジェクトを作ってビルドしたら、下記メッセージが表示された.

“`
Unable to install “アプリ名”
“`
Detailsボタンで詳細を見られるみたいなので、押してみたら、下記内容.

“`
Details

Unable to install “アプリ名”
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402620383

The maximum number of apps for free development profiles has been reached.
〜略〜
“`

#環境
* Xcode 11.4
* Swift 5.2

#試したこと

元記事を表示

MVVMでiOSアプリをつくってみた

# はじめに
以前書いた[今更MVCとかでiOSアプリつくってみた(Swift)・改](https://qiita.com/am10/items/1a877dc2939962a40aaf)の続きです。なんか面談のときにちょこちょこアーキテクチャについて聞かれたので今度は MVVM について考えてみます。

前記事でも書きましたが、アーキテクチャについてネットで色々検索すると言ってることがそれぞれ微妙に違うのがいっぱい出てきます。アーキテクチャについて学びたいと思うなら [iOSアプリ設計パターン入門](https://peaks.cc/books/iOS_architecture) を読みましょう!

この記事は [iOSアプリ設計パターン入門](https://peaks.cc/books/iOS_architecture) を参考にしていますが、あくまで私個人の意見です。

わりと長くなったのでめんどくさい人はソースだけでもどうぞ:bow:

* [VC3つのみでつくったやつ](https://github.com/adventam10/SwiftArchitecture2/tre

元記事を表示

Swift Firebase ユーザーのアイコンとニックネーム登録(Storage & Authentication)

# 概要
– iOSアプリを開発している
– Firebaseを使いたい
– ユーザーのアイコン、ニックネームを登録したい

# 説明
現在開発中のアプリ(クイズのオンライン対戦)でユーザーのアイコンとニックネームが必要となりました。
概要のとおり、個人アプリを開発時に良くあるケースですが、
Qiitaなどでサンプルコードがすぐに見つからないので共有しておきます。

# 要件
– アイコンをタップするとpickerでphotoLibraryから画像選択
– ニックネームはtextFieldで変更
– 保存ボタンタップ時にputData()でアイコンをstorageに登録
– アイコンurlとニックネームを更新

# 結果

# サンプルコード
“`swift
import Foundation
import

元記事を表示

OTHERカテゴリの最新記事