iOS 응용 프로그램에서 Firebase Cloud Messaging을 통해 푸시 알림 보내기
입문
현재 개인이 개발한 응용 프로그램에서 채팅 같은 구조(서버라면)를 만들었고, Firebase 데이터베이스에 데이터를 추가하면 지정한 사용자와 테마에 푸시 알림을 보낼 수 없다.
원단자Firebase에서 iOS 클라이언트로부터 푸시 알림 보내기.
노드입니다.js는 (배치가 이루어질 수 없기 때문에) Python입니다.
환경
iOS 측 준비
푸시 알림 준비
AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound],
categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// APNS登録
#if DEBUG
FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .sandbox)
#else
FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: .prod)
#endif
}
func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) {
// トピックに登録
FIRMessaging.messaging().subscribe(toTopic: "/topics/news")
}
앞으로의 푸시 알림을 위해서 미리 호지!Firebase 데이터베이스에 데이터 추가
Hoge.swift
class Hoge: NSObject {
class func create() {
let ref = FIRDatabase.database().reference()
let data: [String : String] = ["title": "タイトル", "body": "本文"]
ref("message").childByAutoId().setValue(data, withCompletionBlock: { (error, reference) in
if error != nil {
print("Success")
} else {
print("Failure")
}
}
}
}
더잡이지만 그렇겠지Firebase 데이터베이스 모니터링용 코드
requirements.txt
docutils==0.13.1
gcloud==0.17.0
googleapis-common-protos==1.5.0
httplib2==0.9.2
jws==0.1.3
lockfile==0.12.2
oauth2client==3.0.0
protobuf==3.2.0rc1
pyasn1==0.1.9
pyasn1-modules==0.0.8
pycryptodome==3.4.3
Pyrebase==3.0.27
python-daemon==2.1.2
python-jwt==2.0.1
requests==2.11.1
requests-toolbelt==0.7.0
rsa==3.4.2
six==1.10.0
app.pyimport daemon
import json
import pyrebase
import requests
config = {
# GoogleService-info.plistのAPI_KEY
"apiKey": "API_KEY",
"authDomain": "PROJECT_NAME",
"databaseURL": "https://PROJECT_NAME.firebaseio.com/",
# いらないかもしれない
"storageBucket": "gs://PROJECT_NAME.appspot.com"
}
fcm_header = {
'Content-type': 'application/json; charset=UTF-8',
# このコードの下の画像を参照してください!
'Authorization': 'key=API_KEY'
}
firebase = pyrebase.initialize_app(config)
def stream_handler(message):
if message['data'] == None:
return
if message['path'] == '/':
return
if 'title' in message['data']:
title = message['data']['title']
else:
title = '配信'
if 'body' in message['data']:
body = message['data']['body']
else:
body = ''
payload = {'to': '/topics/news',
'priority': 'high',
'notification': {
'title': title,
'body': body,
'badge': 1,
'sound': 'default'
}
}
r = requests.post('https://fcm.googleapis.com/fcm/send', headers = fcm_header, data = json.dumps(payload))
print(r.json())
if __name__ == '__main__':
db = firebase.database()
dc = daemon.DaemonContext()
with dc:
stream = db.child("message").stream(stream_handler)
API_KEY 장소.
(프라이버시를 지켜주세요!)
코드 설명 모니터링
파이썬 패키지는
Pyrebase
및 python-daemon
을 사용합니다.$ pip install pyrebase python-daemon
/message
디렉터리를 보러 갑니다.if message['data'] == None:
return
if message['path'] == '/':
return
이 일대에서 /message
데이터가 없을 때 오류가 발생했습니다 (?)의 명세란 스타일에 정의된 설정입니다.모니터링 코드가 시작될 때 푸시 알림을 보내고 iOS 측에서 알림을 받았지만 경보가 표시되지 않았습니다!이런 일이 있어서 넣었어요.그리고 서버에서 스크립트만 실행하면 됩니다.
참고로
python-daemon
를 사용하여 스크립트를 지켜라!정말 감사합니다.$ python app.py
실행 예
Firebase Database 예제
알림 결과
Reference
이 문제에 관하여(iOS 응용 프로그램에서 Firebase Cloud Messaging을 통해 푸시 알림 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nnsnodnb/items/5171d9e5d73522a50aea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)