iOS関連のことを調べてみた

iOS関連のことを調べてみた

iOS デバイス を Intune へ 登録する(事前作業:MDM プッシュ証明書)

# はじめに
Microsoft Intune で iOS/iPadOS および macOS デバイスを管理するためには、Apple MDM プッシュ証明書が必要で、毎年 証明書を更新する必要があります。

この記事では、Microsoft Intune で Apple MDM プッシュ証明書をアップロードして更新する手順を紹介します。

【公開情報:Apple MDM プッシュ証明書を取得する】
https://learn.microsoft.com/ja-jp/mem/intune/enrollment/apple-mdm-push-certificate-get

# 要件
– Microsoft Edge (最新バージョン)
– Safari (最新バージョン、Mac のみ)
– Chrome (最新バージョン)
– Firefox (最新バージョン)

(Intune でサポートされている Web ブラウザー)
https://learn.microsoft.com/ja-jp/mem/intune/fundamentals/supported-devices-browser

元記事を表示

LazyVStackのonAppearについて調査してみた

`ScrollView` + `LazyVStack`で縦に長い画面を実装しているとき、`VStack`と`LazyVStack`の使い分けについて悩むことが少なからずあったので、調査しました

:::note info
動作環境
Xcode15.0.1
:::
以下のような画面で調査しました
![CleanShot 2023-12-17 at 14.40.14.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/529173/4cb0fd54-5ce3-ae81-1325-9f63ddab7a57.gif)

調査コード
“`diff_swift
ScrollView {
+ // ここと
LazyVStack {
+ // ここと
LazyVStack {
ForEach(0..<25, id: \.self) { i in Text(String(i)) .paddi

元記事を表示

【Unity】WebGL開発ハマりポイント

本記事は [オルトプラス Advent Calendar 2023](https://qiita.com/advent-calendar/2023/altplus2023) の12/17の記事です。

# はじめに
こんにちは!オルトプラスでクライアントエンジニアをしている渡辺です。
約1年半ほどUnityでWebGL向けのゲーム開発をしております。
今回はWebGL開発中に遭遇したハマりポイントとその解決方法についてご紹介したいと思います。

# 概要
– 背景を透過させたい
– iPad判定がされない
– キャッシュが残ってアプリが更新されない
– iOS対策
– サウンドが再生されない

# 詳細

### 背景を透過させる
Webページの上に別のページのWebページを重ねて表示させたい場合があります。
さらに重ねる方のページは元々表示していたページより小さく表示する場合は少し工夫が必要です。

[Swift] 文字列補完 使ってますか?

# もちろん、使ってますよね。

Swiftの文字列補完とは、以下のように、文字列リテラルに変数や式を埋め込んで文字列を生成できる便利な記法です。_([公式ドキュメント](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/stringsandcharacters/#String-Interpolation)から例を引用)_

“`swift:String Interpolation(公式ドキュメントから引用)
let multiplier = 3
let message = “\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)”
// message is “3 times 2.5 is 7.5”
“`

でも、Swiftの文字列補完は、Pythonの[フォーマット済み文字列リテラルのように](https://docs.python.org/ja/3.8/reference/lexical_analysis.html

元記事を表示

【SwiftUI】Please adopt containerBackground APIでウィジェットが表示されない(iOS17)

# はじめに
iOS17でウィジェットを実行したら以下のような文がウィジェットに表示されました。

`Please adopt containerBackground API`

![IMG_4889.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/f6322600-de97-0d72-ae73-fd100394082b.png)

日本語にすると「containerBackground APIを採用してください。」らしいです。

全く表示されないのはまずいです。高速で対応します。

# 実装
“`swift
extension View {
// ウィジェットのbackgroundを設定する
@ViewBuilder
func widgetBackground(_ style: some ShapeStyle) -> some View {
if #available(iOSApplicationExtension 17.0, *) {

元記事を表示

iPhoneアプリをiPad対応するノリでMac対応しよう【SwiftUI】

今回は「iPhone/iPadアプリを超低コストでMac対応する方法」と「その次のステップ」について話します。

## 前提
– アップデートを重ねて成熟したiPhone/iPadアプリがある
– SwiftUIを採用した一般的な構成のアプリ
– Macアプリ開発は未経験

![iPhoneアプリ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3564662/369b777e-6704-a404-b7a8-73c304a5e72a.png)

## 「iPhoneアプリをiPad対応するノリ」
iPhoneアプリは`Supported Destinations`に`iPad`を追加するだけでiPadで動作します。ただそのままだと「使い辛いiPadアプリ」になってしまいます。「使い辛くないiPadアプリ」にするためには(多くのケースにおいて)少量の改修で十分です。その少量の改修を実施した状態でApp StoreにリリースしているiPadアプリは沢山あります。それを「iPhoneアプリをiPad対応するノリ」と呼ん

元記事を表示

プライベートリポジトリのRelease AssetsにXCFrameworkをホストして、Swift Package Manager・CocoaPodsで配布する

:::note info
この記事は [ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo) Vol.8の16日目の記事です。
:::

こんにちは。株式会社ZOZO 計測プラットフォーム開発本部 計測アプリ部 iOSブロックの[@na9ain](https://twitter.com/na9ain)です。

本記事では、GitHubのプライベートリポジトリのRelease AssetsでXCFrameworkをホストして、Swift Package Manager・CocoaPodsで配布・利用する方法を紹介します。

# はじめに

XCFrameworkをサーバー上でホストする必要性が生じる典型的な例は、XCFrameworkに含まれるファイルのサイズが100MBを超えるときです。

分かりやすさのために、このリポジトリを例として挙げます。

https://github.com/thenagain/opencv-xcframework

このリポジトリではSwift Package Man

元記事を表示

SwiftUIを使って10日でSNSアプリをリリースしたので知見を公開してみる

# はじめに :beginner:
DeNAでiOSエンジニアをしている[@tsuzuki817](https://twitter.com/tsuzuki817)です!

本記事は [SwiftWednesday Advent Calendar 2023](https://qiita.com/advent-calendar/2023/swift-wednesday) の16日目の記事です🎅🎄

https://qiita.com/advent-calendar/2023/swift-wednesday

昨日は @treastrain(Ryoga Tanaka)さんの[【初心者向け】iPad だけで Google の AI モデル「Gemini」を使ったアプリを作ってみよう!](https://qiita.com/treastrain/items/6ed2802836969d308481)でした :tada:

Geminiを使ってみようと思える良記事でしたね:pray:

さて、今回は `SwiftUIを使って10日でSNSアプリをリリースしたので知見を公開してみる`という記事

元記事を表示

バーチカルカレンダーはどうやって描画されているのか

これは[株式会社TimeTree Advent Calendar 2023](https://qiita.com/advent-calendar/2023/timetree)の16日目の記事です。

https://qiita.com/advent-calendar/2023/timetree

こんにちは。TimeTree の iOS エンジニア @Bax です。

TimeTree はプレミアム(有料プラン)でいくつかの機能を提供しています。その1つにバーチカルカレンダーがあります。こちらは私が過去に開発を担当していたもので、その開発のあれこれについて書きたいと思います。

# バーチカルカレンダーとは何か

月ごとに表示されるカレンダーを私たちはマンスリーカレンダーと呼んでいます。一方で、バーチカルカレンダーは時間軸で1日の予定を見ることができるカレンダーです。あまり馴染みのない言葉かもしれませんが、テレビ番組表のようなタイムテーブルに近いものです。

【SwiftUI】ウィジェットの周りのマージンをなくす(iOS17)

# はじめに
iOS17からウィジェットの周りに余白が付くようになったみたいです。

そんな邪魔な余白をなくすってのが今回の記事の目的です。

![Simulator Screenshot – iPhone 15 – 2023-12-15 at 22.29.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/b3dcce73-f729-4154-81d0-2423149ce700.png)

こんな感じ

# 実装
“`diff_swift
struct DemoWidgetExtension: Widget {
let kind: String = “DemoWidgetExtension”

var body: some WidgetConfiguration {
IntentConfiguration(
kind: kind,
intent: DemoWidgetConfigurationIntent

XcodeでArchiveができない時の対処法

色々なサイトで、xcodeの画面で、「iOS Generic Device」にしたら良いという記事を散見されます。

![スクリーンショット 2023-12-15 14.46.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3321245/717ec256-d6da-a8d9-e556-11336b74d1f4.png)

ただその項目自体が見つからず、詰まっていましたが、Xcodeが12から「Any iOS Device」を選んでくださいという記事を発見。

無事Archiveができる様になりました。

ViewだけでWebView埋め込みiOSアプリを作る

# はじめに
みなさんは「あ〜このWebサイト・アプリがモバイルアプリだったら便利なのにな〜」と思うことはありませんか?
私はあります…!!

SafariからWebページをホームに追加しても、PWAに対応してないサイトはなんとなく不便、、、
そんなあなたに、WebView埋め込みのiOSアプリをサクッと作るお話を共有したいと思います!

# 環境
– macOS Sonoma 14.2
– Xcode 15.1
– iOS 17.1.2
– Swift 5.x系

# 作ったもの
– Safariに遷移することなく、Webページのコンテンツをアプリ自体に埋め込んだもの
– SwiftUIのViewの中で「WKWebView」を使って実装
– フッターに「戻る」ボタンと「進む」ボタンを実装

# プロジェクトの作成
慣れているみなさまは読み飛ばしてください…!

1. Xcodeで「Create New Project…」を選択
image.pngiOS定期購読サーバ実装 verifyReceiptとApp Store Server APIの使い方

# はじめに
こんばんは
この記事は[and factory.inc Advent Calendar 2023](https://qiita.com/advent-calendar/2023/andfactory)の15日目の記事です。

みなさん、iOSの課金処理で使用される[verifyReceipt](https://developer.apple.com/documentation/appstorereceipts/verifyreceipt)はご存知でしょうか?
もちろん知ってますよね。みんな大好きverifyReceiptは、iOSアプリから受け取ったレシートの購入情報をサーバ側で検証する為に使用されることで国民的な知名度があります。

もしも、ある日突然verifyReceiptがDeprecatedになったらどうしますか?
大丈夫、そんな日はまず来ません。まさか俺たちのAppleがそんなことをするはずがありません。
でも備えあれば憂いなし、ということで今日はもしもに備えての妄想をしていきます。

これは妄想の話ですが、verifyReceiptがDeprecatedにな

【iOS】音楽アプリで使えるCarPlayのUIについて

この記事は[レコチョク Advent Calendar 2023](https://qiita.com/advent-calendar/2023/recochoku)の15日目の記事となります。

## はじめに

こんにちは、後藤です。株式会社レコチョクでiOSアプリの開発をしています。
スキマスイッチの年末のライブを生きがいに今日この頃を過ごしています。

この記事では、CarPlayのAudioアプリを設計する際に使用できるUIの一覧について紹介します。

## 検証環境

Xcode 15.1

## 使用できるテンプレート

CarPlayアプリのUIは、グリッドやリストなどのテンプレートを用いて作成します。

使用できるテンプレートは、CarPlayのアプリの種類を表すエンタイトルメントによって決定されます(Audioアプリなら`com.apple.developer.carplay-audio`)。

![CarPlayTemplateList.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

Combine入門: Publisher, Subscriberについてまとめてみた

本記事は、[フューチャーアドベントカレンダー2023](https://qiita.com/advent-calendar/2023/future)の15日目です。

前日の14日目は、@yamat2667さんで[【Flutter】AR × GPT-V API で食べ物のカロリーに応じたARモデルを表示してみた](https://qiita.com/yamat2667/items/1fbb86ae68b92c9fee8a)でした。

# はじめに
HealthCare Innovation Group(HIG)[^1]所属の橋本です。

今回は、iOSアプリ開発でリアクティブプログラミングを実現する方法の一つであるCombineフレームワークの基本的な使い方についてまとめていきます。具体的には、PublisherとSubscriberの定義について、公式ドキュメントを参照しながら、どのような処理をされているか確認していきます。

この記事を読めば、WWDC2019で発表されたCombineフレームワークの基本的な知識を身につけることができるかなと思います。この記事と私が参照した公式ド

【初心者向け】iPad だけで Google の AI モデル「Gemini」を使ったアプリを作ってみよう!

_この記事は [SwiftWednesday Advent Calendar 2023](https://qiita.com/advent-calendar/2023/swift-wednesday) の15日目の記事です。_

https://qiita.com/advent-calendar/2023/swift-wednesday

—–

Gemini など、Google の生成系 AI モデルを使ったアプリを、iPad だけで作ってみましょう!

![Screenshot 2023-12-15 at 2.46.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90125/4136aea6-5e91-d62a-c444-cf9ba24a47d9.png)

# 環境
ここでは iPadOS 17.2 以降を搭載し、Swift Playgrounds 4.4.1 以降が使える iPad を用いてアプリを作ります。うまく動かない場合は iPadOS のアップデートや Swift Playg

【Flutter】flutter_mapで出来ることって?flutter_mapざっくり解説。

[DeNA 24新卒 Advent Calendar 2023 ](https://qiita.com/advent-calendar/2023/dena-24-newgrad)の 15日目の記事です。

この記事では、Flutterのマップパッケージである、[flutter_map](https://pub.dev/packages/flutter_map)について、さらっと紹介します。

https://pub.dev/packages/flutter_map

flutter_mapは高頻度でアップデートが行われ、使い方などもバージョンによって結構変わってしまいます。
この記事ではflutter_mapのバージョンは6.1.0ですので、「あれ?コード通り実装したのに、そんな関数ないって言われる!」みたいにならないよう、ご注意ください!

[flutter_map Docs](https://docs.fleaflet.dev/)

https://docs.fleaflet.dev/

## 目次
– [環境](#環境)
– [事前準備](#事前準備)
– [

【iOS】アプリ譲渡の手順

# はじめに
法人アカウントから個人アカウントへアプリを譲渡する際にやったことをまとめました。

# AppStoreConnectでの譲渡
### 譲渡側の手順
① 法人アカウントでログインをしている事を確認します。
② 譲渡したいアプリを選択します。
![スクリーンショット 2023-11-17 13.28.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/7ebc8b0d-33ff-7dd4-64ec-e178ce672251.png)

③ 「アプリ情報」の項目を選択します。
![スクリーンショット 2023-11-17 13.30.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1745371/1b7e5f75-91fb-e3d0-b6c1-00736f7510f3.png)

④ 「アプリの譲渡」を選択します。
![スクリーンショット 2023-11-17 13.31.51.png](h

【SwiftUI】ウィジェットを強制的に更新する

# はじめに
アプリ側でウィジェットの着せ替えを設定できる仕組みを作った際に、
着せ替えを変更したタイミングで即時にウィジェットに反映されないと「変更されないじゃん」と思われてしまう可能性が高いです。
それを防ぐためにアプリ側で強制的に更新させたいです。

今回はその方法を記事にしました。

# 実装
アプリ側で絵文字を設定するとウィジェットに表示される絵文字も変更されるというアプリで考えます。
`emoji`を`@AppStorage`で持ってAppGroupで共有しています。
これでウィジェット側でも`emoji`を使えるようになります。
“`swift
import SwiftUI

struct ContentView: View {
@AppStorage(“emoji”, store: UserDefaults(suiteName: “group.com.demo”)) var emoji: String = “❔”

private let emojis = [“🐶”, “🐱”, “🐭”, “🐹”, “🐰”, “🦊”, “🐻”, “🐼”, “🐻‍

Gemini Pro APIをiOSで

Gemini Pro API公開されましたね

精度的にはGemini Ultraからかなり機能が絞られているだけあってGPT-4よりは劣ることが公式ベンチマークなどからもわかっていますが、一方で以下のようなメリットもあると思います。

– Google AI Studioですぐ試せる
– プレビュー版なのでまだ無料(ただし商用利用は不可)
– 画像を使ったマルチモーダルプロンプトも無料で試せる
– 各プラットフォームのライブラリとクイックスタートガイドが日本語で用意されている

最も注目すべきはもちろん一番最後、各プラットフォームのライブラリとクイックスタートガイドが日本語で用意されているというところです!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10943/4ea25b08-f2c7-6bc4-8c59-4f8cf29eded1.png)

これは試しやすさに関して200点満点!

というわけで早速試してみたところを簡単に共有します。

## 動作の様子

マンスリーカレンダー バーチカルカレンダー