タグ

iOSに関するsadoru3のブックマーク (249)

  • 令和4年のPush通知を改めて整理する

    はじめに iOSのPush通知は定期的にアップデートを繰り返しており、常に最新の技術を追っていく必要があります。 記事では令和4年時点での全体像把握のため、概要の整理を行いました。 ※ あくまで全体感のキャッチアップを目的としているため、各トピックの詳細な解説は行っていません。 Push通知とは サーバーサイドから、任意のタイミングでユーザーの特定端末に通知を送信できる仕組み AppleのPush通知基盤であるAPNsに通知の送信をリクエストし、そこからユーザー端末に対してデータが送信される 似たものとしてローカル通知があるが、こちらはアプリ内の特定タイミングで通知を登録するもの 公式ドキュメントはこちら 要素 APNs Appleが提供しているPush通知基盤 ユーザー端末へのPush通知の送信はここを介して行われる Production環境とSandbox環境がある Producti

    令和4年のPush通知を改めて整理する
    sadoru3
    sadoru3 2024/11/15
    まとめ
  • Core NFCでNDEFを読み書き(SwiftUI版)

    はじめに 前回はデリゲートがめんどくさそうだったので UIKit でやったのですが SwiftUI でも簡単にできそうだったので SwiftUI でやってみました。 完成品はこんな感じ。 入力したテキストと固定値の URL を書き込んでいます。 ソース import Foundation import CoreNFC import SwiftUI final class NFCSession: NSObject, ObservableObject { private var session: NFCNDEFReaderSession! private var isWriting = false private var ndefMessage: NFCNDEFMessage! private var writeHandler: ((Error?) -> Void)? private var

    Core NFCでNDEFを読み書き(SwiftUI版)
  • Core NFCのアップデート

    Core NFCはiOS 11で追加されたフレームワークですが、iOS 13で大幅に強化されました。何が変わったのかを知るために、まずは「以前はどうだったのか」というところから解説していきます。 これまでのCore NFC おさらい:Core NFCの基的な実装方法 iOS 11から使えるようになったCoer NFCフレームワークでは、NDEF(NFC Data Exchange Format)というデータフォーマットを読み取ることができました。おさらいとして、その実装手順を簡単に解説します。 まず、.entitlementsファイルに次の項目を追加します。

    Core NFCのアップデート
  • AppleのIn-App-Purchase(アプリ内課金)テスト時のSANDBOXアカウントの設定方法と注意点

    In-App-Purchase(アプリ内課金)テスト時の注意点 自分のApple IDでもIn-App-Purchaseのテストはできますが、例えば色んなテストアカウントで同じApple IDを使い回すと、RevenueCatが課金情報を付け替え(TRANSFER)してくれちゃったりして、よくわからなくなります。 また、SANDBOXの課金情報も自分のアカウントを使っていると、サブスクリプションの管理の画面で「接続されません」と表示されてしまい、困ったりすることもあります。 ということで、ちゃんとSANDBOXアカウントを作成し、普段のAppleIDとは別のSANDBOXアカウントでIn-App-Purchaseのテストをした方が無難だということがわかりました。 ということで、SANDBOXアカウントの作成方法と設定をまとめておきます。 SANDBOXアカウントの作成方法 Apple Co

    AppleのIn-App-Purchase(アプリ内課金)テスト時のSANDBOXアカウントの設定方法と注意点
    sadoru3
    sadoru3 2023/12/13
    sandbox環境でのアカウント設定
  • Appleに登録したDevice一覧をUserScriptを使って抽出する

    sadoru3
    sadoru3 2023/08/21
    Tampermonkey用スクリプト。助かりました。
  • iOSのネットワーク接続状態の検出にはReachabilityよりシンプルなNWPathMonitorを使いましょう。 - Qiita

    iOSのネットワーク接続状態の検出にはReachabilityよりシンプルなNWPathMonitorを使いましょう。iOSSwiftNWPath iOSでネットワーク接続状態の取得といえばReachabilityを使うといった印象が強くありませんか。 Reachabilityを使うには、まず https://developer.apple.com/library/archive/samplecode/Reachability/Introduction/Intro.html からApple の提供しているサンプルコードをダウンロードして・・・なんて手間がありましたが、もっと手軽に利用できるApple標準のクラスがありました。 簡単にネットワーク接続のモニタリングが可能 ライブラリいらずで、iOSのネットワーク接続状態監視にはNWPathMonitor使うとよいことを知った。30行くらいで書

    iOSのネットワーク接続状態の検出にはReachabilityよりシンプルなNWPathMonitorを使いましょう。 - Qiita
    sadoru3
    sadoru3 2023/08/10
    ネットワーク接続状態を確認するのはライブラリとか不要
  • 【Swift】NWPathMonitorを使ったネットワーク監視方法について - Qiita

    日内容 ライブラリを使わずにApple純正の方法(NWPathMonitor)で、Networkのハンドリングをできることが気がつきました。 今回はその時の手順を記載しております。 An observer that you use to monitor and react to network changes. ネットワークの変更を監視して対応するために使用するオブザーバー。 Availability iOS 12.0+ macOS 10.14+ Mac Catalyst 13.0+ tvOS 12.0+ watchOS 5.0+ Xcode 10.0+ 開発環境 Xcode 14.4 Swift iOS14以上 手順 1.Network.swiftを作り、下記を追加します。 import Network class Network { static let shared = Netwo

    【Swift】NWPathMonitorを使ったネットワーク監視方法について - Qiita
    sadoru3
    sadoru3 2023/08/10
    ネットワーク接続状態を確認するのはライブラリとか不要だった
  • StoreKit 2のAppStore.sync()検証

    iPhone などの iOSアプリにおいて、StoreKit 2を用いたリストア(復元)処理の検証に関して、筆者の体験を紹介する。 筆者のマシン Mac mac mini (M1, 2020) OS Monterey バージョン 12.4 XCode バージョン 13.4.1 Swift バージョン 5.6.1 ここでは次の手順で説明する。 はじめに リストア(復元)ボタンの追加 TestFlightでの検証 App Storeで公開・動作確認 はじめに iOSアプリの App内課金処理を StoreKit 2 で実装してApp Store の審査に提出した際、リストア(復元)のボタンを設置していないと言う理由で、Review での却下(Reject)を受けた。 理由は「Guideline 3.1.1 – Business – Payments – In-App Purchase」で、メッ

    StoreKit 2のAppStore.sync()検証
    sadoru3
    sadoru3 2023/06/21
    “リストア(復元)のボタンを設置していないと言う理由で、Review での却下(Reject)を受けた。”
  • StoreKit2でシンプルな課金処理 第1回 | 独創スマホアプリ開発

    あけましておめでとうございます。年もよろしくお願いいたします。 (੭ ˃̣̣̥ ω˂̣̣̥)੭ु⁾⁾ 2022年はiPhoneアプリのテキスト漫画に課金処理を実装していきたいと思います。2022年1月時点で最新の Xcode (13.2.1) をベースに、iOS15で登場したStoreKit2を利用して誰でも確実に課金処理を実装できるよう、連載形式で少しずつ解説していきます。 ※アプリ開発経験者向けの課金処理に関する解説です。 ※テキスト漫画には、既に連載の方法で月額課金を実装してリリース済みです。 早速ですが、第1回はアプリ内課金の種類を説明します。 アプリ内課金には 1.消耗型 2.非消耗型 3.自動更新サブスクリプション 4.非自動更新サブスクリプション の4種類があります。 1の消耗型は皆さん大好きなガチャを回すため、ゲーム内通貨を購入する際に利用されます。1回使ったら戻っ

    sadoru3
    sadoru3 2023/06/19
    一連の実装の流れ、連載 Appleのサンプルコード利用
  • StoreKit2の変更点まとめ

    StoreKit2についてまとめました。 従来のStoreKitからの変更点を主としており、アプリ内課金の実装方法についての説明は割愛しています。 Product 商品情報&購読処理を持つStruct 1メソッドで商品情報の取得が可能 let products: [Product] = try await Product.products(for: <# ProductIdの配列 #>) Productには、下記のような欲しかった情報が網羅されている type: Product.ProductType consumable, autoRenewableなど課金タイプのenum。複数の課金タイプを持つアプリで活用できる displayPrice: String ローカライズ済みの価格表記(ex. ¥360, $4.99) displayName: String 商品名 Purchase 購読

    StoreKit2の変更点まとめ
    sadoru3
    sadoru3 2023/06/16
    "従来のStoreKitからの変更点を主としており、アプリ内課金の実装方法についての説明は割愛しています。"
  • 【Swift】ロギングライブラリを簡単に比較した - Qiita

    // ログファイルのパス指定 let manager: DDLogFileManagerDefault = DDLogFileManagerDefault(logsDirectory: "/path/to/file") // ファイルロガークラス et fileLogger: DDFileLogger = DDFileLogger(logFileManager: manager) // 出力周期(24h) fileLogger.rollingFrequency = TimeInterval(60 * 60 * 24) // 最大ファイルサイズ(10MB) fileLogger.maximumFileSize = 10 * 1024 * 1024 // 最大ファイル数(7ファイル) fileLogger.logFileManager.maximumNumberOfLogFiles = 7 /

    【Swift】ロギングライブラリを簡単に比較した - Qiita
    sadoru3
    sadoru3 2023/03/26
    ログ出力 “記述のしやすさやカスタマイズ性等考慮するとXCGLoggerを基本的に選びそう。”
  • [iOS] XcodeのRun起動でないときにログをみたい | DevelopersIO

    こんにちは。きんくまです。 XcodeでRunから起動するときは、Xcodeのコンソール上にデバッグの出力が表示されます。 print文で出るやつです。 今回アプリをアップデートした後の初回起動時の出力を確認したかったのですが、 BundleIDの関係でXcodeのRun起動での確認ができませんでした。 どうしたものかなー?と思って調べました。 参考URL OSLogを利用したロギング [iOS 10] OSLog でアプリログを出力する Explore logging in Swiftの紹介 #WWDC20 LoggerとOSLogを使って出力 iOS 14以降 -> Loggerを利用 iOS 13以下 -> OSLogを利用 という振り分けになります。 出力クラスを作る OSのバージョンごとに振り分けしつつ、文字列とIntを出力できるクラスを作りました。 class MyLogger

    [iOS] XcodeのRun起動でないときにログをみたい | DevelopersIO
    sadoru3
    sadoru3 2023/03/26
    Xcodeを使わず、Console.appから確認したい場合のログの仕込み方
  • Swift: デバッグ時だけprintする便利なやつ

    デバッグ時だけ標準出力をしてリリース時には何も起きない ファイル名や行番号、関数名なども一緒に出力してくれる 複数の値を渡してもきれいに出力される こんな便利関数が欲しかったので自作していて、プロジェクトを作ったらまずこれを突っ込んでいる。 func logput(_ items: Any..., file: String = #file, line: Int = #line, function: String = #function) { #if DEBUG let fileName = URL(fileURLWithPath: file).lastPathComponent var array: [Any] = ["💫Log: \(fileName)", "Line:\(line)", function] array.append(contentsOf: items) Swift.p

    Swift: デバッグ時だけprintする便利なやつ
    sadoru3
    sadoru3 2023/03/26
    ログ出力
  • Swift iOS BackgroundTasks framework — Background App Refresh in 4 Steps

    IOS allows app to refresh it content even when it is sent to background. iOS can intelligently study the user’s behaviour and schedule background tasks to the moment right before routine usage. It is useful for app to retrieve the latest information from its server and display to user right when app is resumed to foreground. Examples are social media app (Facebook, Instagram & WhatsApp) and news a

    Swift iOS BackgroundTasks framework — Background App Refresh in 4 Steps
    sadoru3
    sadoru3 2023/03/26
    アプリのバックグラウンド更新の承認を監視する
  • 【Swift】BackgroundTasksでいつでも新鮮アプリ | 2速で歩くヒト

    作るものの説明 BackgroundTasksの説明をするにあたり、ここではサンプルとして「インターネットからニュースのRSSを拾ってきて、その記事タイトルの一覧を表示するアプリ」を作ってみたいと思います。 Background Fetchを使って定期的に新しい記事タイトルを取得し、Background Processingを使って古くなった記事を削除します。 ユーザーはただ見るだけのアプリです。 ※ RSSはVer2.0のものを想定しています。 ※ 下記サンプルソース中のRSSへのURLは適宜書き換えてください。 まずは準備 BackgroundTasksを使用するには「XcodeプロジェクトのCapabilitiesにBackground Modeを追加」と「Info.plistにタスクの識別子を記述」の2点の準備が必要です。 それぞれ見ていきましょう。 Background Mode

    【Swift】BackgroundTasksでいつでも新鮮アプリ | 2速で歩くヒト
    sadoru3
    sadoru3 2023/03/26
    実装例 refresh, processing 5分後に設定で8分後、その後実行タイミング伸びる 以降はアプリ利用頻度次第か 登録できるタスク、refreshは1つまで
  • iOS13から利用できるBackgroundTasksを使ってみよう! - Takahiro Octopress Blog

    はじめに 今回はiOS13で新たに追加された BackgroundTasks Framework について見ていきたいと思います。 基的には、 WWDC2019動画の『Advances in App Background Execution』を見ながら実践してみました。 ですが、微妙に躓くところもあったのでメモとして残しておきたいと思います。 BackgroundTasksとは まず、 BackgroundTasks の説明です。 BackgroundTasks はiOS13から利用できる新しいFrameworkになります。 BackgroundTasks には大きく分けて下記2つのAPIが存在します。 Background Processing Tasks Background App Refresh Tasks Background Processing Tasks Backgrou

    sadoru3
    sadoru3 2023/03/24
    BackgroundTasksのデバッグ方法
  • iOSアプリのセキュリティ基礎

    sadoru3
    sadoru3 2023/03/11
  • 【Swift5】ざっくりと理解するキーチェーンアクセス | なんくるないさーエンジニア

    パスコードロック機能を実装したかったので、キーチェーンアクセスについて改めて調べました。 大幅な変更とかあるのかなーと思ったのですが、追加追加だけで、基的には昔から変わってない印象。 ノー知識の方にお伝えすると、数値やフラグなどをアプリ内に保存する方法は UserDefaults と Keychain の2パターンあるので、どちらを使えばいいかを比較して進めていきます。(使い方は載せません) 開発環境(前提条件) ・Xcode12 ・Swift5 UserDefaults について アプリの設定情報などを永続的に保存するときに使います。 ・音楽プレイヤーのループ設定(全曲/1曲/なし) ・アプリの起動回数 ・一度だけ表示するアラートの判定フラグ などなど、様々な使い方があります。 ただし、画像などの重たいデータは保存してはいけません。(Data型にしたとしても) そして、UserDefa

    【Swift5】ざっくりと理解するキーチェーンアクセス | なんくるないさーエンジニア
    sadoru3
    sadoru3 2023/03/10
  • iOSアプリのバックグラウンド状態を考慮した実装における注意点 - RevComm Tech Blog

    モバイルエンジニアの長尾です。 最近は暑くてすっかり外に出なくなってメタボ体型になってしまったので、定期的に運動する方法としてジムに通うようになりました。やっぱり運動はいいっすね。 はじめに バックグラウンドでの着信時の動作 フォアグラウンド状態での動作をバックグラウンド状態でも続けたい時の動作 まとめ 最後に はじめに みなさんは、iOSアプリは、ユーザーには見えていないけれどもアプリが動いている状態があることをご存じですか? iOS アプリはバックグラウンド状態でのアプリの動作は厳しく制限されていて、ユーザーに見えない状態において、アプリはほとんど動かせません。しかし、いくつかのケースにおいては、バックグラウンド状態でもアプリを動作させることができます。 例えば、ミュージックプレイヤーのようなアプリは、アプリがユーザーから見えていなくとも、音楽を流し続けることができています。これはアプ

    iOSアプリのバックグラウンド状態を考慮した実装における注意点 - RevComm Tech Blog
    sadoru3
    sadoru3 2023/03/10
    ”フォアグラウンド状態での動作をバックグラウンド状態でも続けたい時の動作“
  • SwiftUIアプリでバックグラウンドタスクの実行(ネットワーク、プッシュ通知) (BackgroundTasks, URLSession) - Qiita

    SwiftUIアプリでバックグラウンドタスクの実行(ネットワーク、プッシュ通知) (BackgroundTasks, URLSession)SwiftUIQiitaEngineerFesta2022WWDC22WWDC2022iOS16 iOS 16の新しいビューモディファイアで、SwiftUIで簡単にバックグラウンドタスクを実行することができるようになりました。 バックグラウンドタスク (BackgroundTasks) とは バックグラウンドタスクは、アプリケーションがアクティブに実行されていないときに実行されます。 この記事では、アプリ内のデータを再読み込みする(次の通知やウィジェットの再読み込みなどのスケジュールも設定する)ために使用される、リフレッシュバックグラウンドタスク (.refresh) について説明します。 通常のフロー 上のグラフで、青い長方形はフォアグラウンドのアプ

    SwiftUIアプリでバックグラウンドタスクの実行(ネットワーク、プッシュ通知) (BackgroundTasks, URLSession) - Qiita
    sadoru3
    sadoru3 2023/03/10