問題タブ [ios8-today-widget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
318 参照

ios - iOS Today ウィジェットの自動高さ

高さを静的にできないように、xml から今日のウィジェット ラベルにテキスト データを読み込んでいます。フォントサイズは17pxなので、1行に最大30文字あることを数えて、このように高さを設定しようとしました

ウィジェットの上に静的テキストがあるため、高さに +40 を追加し、フォント サイズが 17px であるため、22 倍します。2 つの行の間に 5px の間隔があると仮定しました。

しかし、これは機能しません。理由がわかりません:(。ウィジェットの高さを動的にする他の方法はありますか?

0 投票する
1 に答える
1485 参照

ios - iOS Today ウィジェットのコンテンツが消えて再描画されることがある

Appleのドキュメントから、今日のウィジェットではシステムがスナップショットを取得し、ウィジェットを描画する必要がある場合は、最初にスナップショットを表示してから、必要に応じて更新を実行することを読みました。

ウィジェットを最新の状態に保つために、システムはウィジェットのビューのスナップショットをときどきキャプチャします。ウィジェットが再び表示されると、システムがビューのライブ バージョンに置き換えるまで、最新のスナップショットが表示されます。

スナップショットが取得される前にウィジェットの状態を更新するには、NCWidgetProviding プロトコルに準拠していることを確認してください。ウィジェットが widgetPerformUpdateWithCompletionHandler: 呼び出しを受け取ると、ウィジェットのビューを最新のコンテンツで更新し、次の定数のいずれかを使用して完了ハンドラーを呼び出し、更新の結果を記述します。

上記から、コードが次のように動作することを期待していました。

  1. viewDidLoad や widgetPerformUpdateWithCompletionHandler などで、NCWidgetProviding プロトコル (completionHandler(NCUpdateResult.NewData) など) を呼び出す前に、UI をセットアップします。

  2. 次に、completionHandler(NCUpdateResult.NewData) を呼び出します。

  3. 次に、システムは UI のスナップショットを取得します。

  4. ユーザーが今日のウィジェットを閉じて開くと、システムはすぐにスナップショットを提示し、更新が必要かどうかを確認します。

  5. 必要に応じて更新します。

ただし、UI が描画された後に今日のウィジェットを閉じて開くと、上記のように動作しません。

時々、期待どおりに動作します。ウィジェットを開くとすぐに、以前の UI がすぐに表示され、その後更新されます。

しかし、それ以外の場合は、以前の UI の代わりに空白が表示され、もちろん UI は再描画されますが、この「点滅」は煩わしいものです。

私は何か間違ったことをした?ドキュメントを誤解しましたか? 自動レイアウトとレイアウト制約を使用しているためでしょうか??

考えられることはすべて試しましたが、うまくいく場合とうまくいかない場合があります。

この迷惑なまばたきを避けるにはどうすればよいですか?

ヘルプやアドバイスをいただければ幸いです。ありがとう!

0 投票する
4 に答える
2688 参照

ios - Today 拡張機能が iOS 8.1.2 で起動する前にクラッシュする

フィードから記事をダウンロードして最新の記事を表示する今日の拡張機能を作成しています。すべてが iOS 8 で問題なく動作し、iOS 8.1 でも引き続き動作し、その後 iOS 8.1.2 が登場し、today 拡張機能が動作しなくなったという苦情が寄せられ始めました。iOS 8.1.2 デバイスでデバッグを試みましたが、拡張機能が起動する前に、次のエラーでクラッシュします。

今日の拡張機能を開発するときに頻繁に発生するバグに関するこの投稿を読みました: http://www.atomicbird.com/blog/ios-app-extension-tip

トム・ハリントンは彼の投稿で次のように述べています。

iOS 8 (およびその他の最近のバージョン) では、Xcode のビルド設定でモジュールを有効にするということは、使用するすべてのフレームワークを明示的にリストする必要がないことを意味します。それらは自動的に検出されます。

しかし、これは、Today 拡張機能が使用する NotificationCenter.framework には当てはまりません。ビルド設定からそれを削除すると、ビルドの警告やエラーは発生しません。しかし、拡張機能をロードしようとすると、libextension.dylib から例外が発生し、拡張機能はロードされません。例外メッセージは啓発的ではありません:

2014-08-16 12:06:53.793 TodayTestExtension[41313:6111763] * キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '* setObjectForKey: オブジェクトは nil にできません (キー: <__NSConcreteUUID 0x7fd729422390> BCD5-F3DBA​​6F34DB5)' 今日の拡張機能を実行している場合は、そのフレームワークをビルド設定のままにしてください。そこにある必要はありませんが、あります。

私の拡張機能にはビルド設定に NotificationCenter.framework が含まれていますが、私の問題は何らかの形で似ているのではないかと思います。

誰もが同様の問題に直面しましたか?それを解決する方法はありますか?

0 投票する
2 に答える
1274 参照

swift - iOS Today 拡張機能は、アプリの Info.plist から URL スキームを読み取ることができますか

アプリ ターゲットがあり、その Info.plist で、URL を使用してアプリを開くために使用できる URL スキームを定義しました。

今、今日の拡張機能を追加しています。拡張機能からその URL を開くテーブル ビューが必要になります。それが API でどのようにサポートされているかがわかります。

アプリの Info.plist から URL スキームを取得できますか、それとも、開くために呼び出す拡張機能の値を基本的に「ハードコーディング」していますか?

0 投票する
1 に答える
6556 参照

ios - NSUserDefaultsDidChangeNotification と Today 拡張機能

Today Extensionを使用して iPhone アプリを開発しています。アプリには、から読み込み/に保存する Model モジュールがありますNSUserDefaults。この情報をメイン アプリと拡張機能の両方で利用できるようにするため、アプリ グループを使用します。

アプリと拡張機能の両方が問題なく情報にアクセスできます。

メイン アプリは、ユーザーに提示するローカル通知を作成する場合があります。その通知には 2 つのアクションが関連付けられています ( UIUserNotificationAction)。これらのアクションの 1 つが、メイン アプリのバックグラウンドで実行されるコードをトリガーします。そのコードはNSUserDefaults情報を変更し、同期をトリガーします。私のコードは次のようなものです:

さて、Today Extで。NSUserDefaultsウィジェットのインターフェイスをリロードできるように、情報に加えられた変更を自然に観察します。

さて、ここに私の問題があります:

  1. メイン アプリは UILocalNotification をスケジュールします。今日のビューを開いて、今日のウィジェットを確認します。

  2. 通知が発生すると、画面上部にバナーが表示されます。

  3. そのバナーを下にスライドして 2 つのアクションを表示し、前述の 1 つを選択します (今日のウィジェットはまだライブで画面に表示されています)。

アクションがバックグラウンドで正しく実行されていること、および の情報が変更されていることはわかっていますNSUserDefaults

ただし、today ウィジェットが常にアクティブで画面に表示されていても、リロード アクションはトリガーされません。さらに調査した結果、 が起動されていないことを確認できましNSUserDefaultsDidChangeNotification(ブレークポイントを配置しましたが、トリガーされず、他のチェックも行いました)。

通知アクションによって変更が行われていることがわかります。これは、(今日のビューを閉じてから開くことによって) ウィジェットを強制的にリロードすると、ウィジェットが正しく更新されるためです。

オンラインでさまざまなチュートリアルを見てきましたが、彼らが最初に言うことは、この通知を聞いて、「ウィジェットが同期するNSUserDefaults」ようにウィジェットを更新することです。しかし、問題は、この通知は絶対に役に立たないということです! どうして??


注 1:今日のウィジェットから NSUserDefaults の情報を変更すると、通知が正しく発生します。

注 2: 今日のウィジェットをデバッグするのはまったくひどいことです。ブレークポイントやクラッシュに反応する前に、Xcode に「名前でプロセスにアタッチ...」するように指示する必要があります。また、iOS は常にウィジェット用の新しいプロセスを作成しているため、Xcode に再度アタッチするように常に指示する必要があります。

0 投票する
2 に答える
1120 参照

ios - 横向きモードのウィジェットの問題

横向きモードでビューのコンテンツをトリミングするという、ウィジェットに関するこのいらいらする問題があります。コンテンツのサイズを静的に設定しましたが、機能しません。Apple はウィジェットが横向きで特定の高さを持つように制限していますか? Apple のインターフェイス ガイドラインでは推奨されていませんが、実行可能ですか?

編集: ここに画像の説明を入力

0 投票する
1 に答える
756 参照

ios - 通知センターが閉じられたときに関数を呼び出す

今日のウィジェットを使用して(Swiftを使用して)最初のiOSアプリをコーディングしています。通知センターを閉じた後、アプリがフォアグラウンドに戻るたびに呼び出される関数があるかどうか疑問に思っていました.

オブザーバーを使用して確認できることはわかってUIApplicationWillEnterForegroundNotificationいますが、アプリの使用中に通知センターをプルダウンして再度閉じると、関数が呼び出されません。

私の問題は単純です。アプリで使用しているデータを操作するために、ユーザーが通知センターをプルダウンする可能性はほとんどありません。ユーザーは、today ウィジェット ボタンを押すことで現在地を保存できるはずです。

アプリの使用中にそれが発生した場合、アプリは新しいデータをチェックしません。