急ぎの開発案件ですがAndroidは作成中っぽいのでSwiftコードで
Simple Web Viewのチュートリアル実行https://qiita.com/fromage-blanc/items/079bc8d6da34ac90fecf
こSimulatorで制作中のサイトチェック,JS系動作OK 動画が見づらいと言うのでこのサイトを見るも普通に動画再生確認.問題が起きたときに再確認.
iPhoneXに対応?https://jidouka.work/?p=248
XR等にお対応をどうするのか,,
Push通知実装
参考
https://qiita.com/toshi586014/items/5dea32faab94828fae75
can’t find gem cocoapods 出たので,sudo gem install cocoapods
で
pod init できた
pod isntallする.参考WEBにそって,公式より1つ多くSDKインスト
pod 'Firebase/Core'
pod 'Firebase/Messaging'
XCODEでエラーでた Could not build Objective-C module ‘Firebase’
手順,https://dev.classmethod.jp/smartphone/iphone/remove-xcode-derived-data/
1.Xcode を終了 2.該当プロジェクトの「DerivedData」ファイルを削除
(消し方がわからない方は関連リンクをご覧ください。) 3.ProjectName.xcworkspaceを削除
(ProjectNameはプロジェクト名が入ります。) 4.「Podfile.lock」ファイルと「Pods 」フォルダを削除 5.「pod install」で再度ポッドを追加 6.新しく生成された「ProjectName.xcworkspace 」ファイルを開きビルド
特に1と6が重要 これで,Firebaseとの通信できた.
Firebaseから通知送るときは, (1)実機であること
(2)通知送る画面の最下部にあるサウンド とバッジ を有効にする.
ここから,個別端末に通知の内容
このあたりを参考にしたhttps://qiita.com/miyae/items/623c7869714b894a1b83
これも参考にhttps://cpoint-lab.co.jp/article/201811/%E3%80%90%E5%82%99%E5%BF%98%E9%8C%B2%E3%80%91firebase-cloud-messaging%E3%81%A7%E3%81%AE%E3%83%97%E3%83%83%E3%82%B7%E3%83%A5%E9%80%9A%E7%9F%A5%E3%81%AE%E9%80%81%E4%BF%A1%E3%81%AB%E3%81%A4%E3%81%84/
まず,個別端末通知の方法
AppDelegate.swiftに
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let deviceTokenStr: String = deviceToken.reduce("", { $0 + String(format: "%02X", $1) })
print("APNsトークン: \(deviceTokenStr)")
// APNsトークンを、FCM登録トークンにマッピング
if let fcmToken = InstanceID.instanceID().token() {
print("FCMトークン: \(fcmToken)")
}
}
を追加.これのFCMトークンがデバイスID.XCODEのコンソールで見ることができる
この情報元に,PHPでメッセージを送る
<?php
class Notification {
private static $apiKey = "ここにサーバーキー"; // Firebase console:Overview > プロジェクトの設定 > クラウドメッセージング > サーバーキー
private static $url = "https://fcm.googleapis.com/fcm/send";
static public function send($pushTokens,$title,$message) {
$headers = [
"Authorization: key=".self::$apiKey,
"Content-Type: application/json"
];
$fields = [
"registration_ids" => is_array($pushTokens) ? $pushTokens : [$pushTokens],
"priority" => "high",
"notification" => [
"title" => $title,
"text" => $message
]
];
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, self::$url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($handle);
curl_close($handle);
return $result;
}
}
?>
これを送信するPHP
<?php
//クラス読み込み
require_once './messageClass.php';
//クラス生成
//$message = new Notification();
$pushTokens='';//ここにデバイスID
$title="はろー";
$message="ぼくどらやき";
Notification::send($pushTokens, $title, $message);
?>